Application


程式的進入點public static void main(String args[]){...}
import javax.swing.JOptionPane;主要是產生圖形介面,JOptionPane.showMessageDialog(null,'Hello!\nJava!'); 的功能是彈出一個訊息對話盒,內容為Hello

 

Applet


所有的Applet必定會執行的三個方法: 依序為
init(): 當Applet 第一次被瀏覽器載入. (only one)
start(): 當畫面跳回目前網頁會再被執行.
paint()
在程式中重寫paint()所要做的動作,可以在網頁畫面上顯示結果
public void paint(Graphics g){...}
Graphic是import java.awt.Graphics這是一個繪圖物件

 

網路連接


import java.net.*;
使用URL,URLConnection的類別做資料連接
URL google=new URL("http://www.google.com/");
與google做連線

有關如何做網路連接的基本教學

參考資料1
參考資料2
參考資料3
 
心得
 
1.例外處理常常會出問題,若沒有透過工具的幫忙,不知要何時使用ClassNotFoundException,IllegalAccessException,InstantiationException這些例外。

2.Java的類別是採用動態載入的,也就是當我們new某一個類別物件時該類別物件才會被載入,測試方法如下:
假設有三個java的檔案,一個叫做mainf.java,另一個叫show.java,另一個show1.java
show.java的內容如下:
public class show1{
void show1(){}
}


public class show{
void show(){}
}


mainf.java的內容如下:
public class mainf{
public static void main(String argv[]){
show a,b,c;
a=new show();
b=new show();
show1 d;
}
}
然後執行javac show1.java將show1.java編成show1.class
然後執行javac show.java將show.java編成show.class
然後執行javac mainf.java將mainf.java編成mainf.class
然後執行java -verbose:class mainf
觀察所產生出來的內容

~~~以上省略
[Loaded java.security.Principal from C:\j2sdk1.4.2_02\jre\lib\rt.jar]
[Loaded java.security.cert.Certificate from C:\j2sdk1.4.2_02\jre\lib\rt.jar]
[Loaded mainf]
[Loaded show]
[Loaded java.lang.Shutdown from C:\j2sdk1.4.2_02\jre\lib\rt.jar]
[Loaded java.lang.Shutdown$Lock from C:\j2sdk1.4.2_02\jre\lib\rt.jar]

上面式產生出結果的片段,我只列出最後的六行,上面的部分都是載入一些java執行時必要的類別,[Loaded mainf]表示載入我麼要執行的這個類別,
因為mainf個類別需要用到show這個類別所以載入,雖然我們有宣告要使用show2這個類別,但沒有宣告實體,所以並找不到[Loaded show2]這一行,
所以結論是java會根據要new的類別而載入需要的類別,並不會浪費多餘的記憶體空間

3.根據第二點的描述所以tomcat能再程式仍然在執行時直接將程式碼在更新的動作,deploy,因為java語言的特性

4.示範如何使程式更加負有彈性與模組化。假設目前你用java寫了四個類別,office.java,assemble.java,word.java,excel.java
這四個檔案主要在說明如何有效率做程式碼的管理
office.java的內容如下:
class office
{
public static void main(String argv[])throws ClassNotFoundException,IllegalAccessException,InstantiationException{
Class c=Class.forName(argv[0]);
Object o=c.newInstance();
assemble a=(assemble) o;
a.show();
}
}

assemble.java的內容如下:
public interface assemble
{

public void show();

}

word.java的內容如下:
class word implements assemble
{

public void show(){
System.out.println("使用word");
}

}

excel.java的內容如下:
class excel implements assemble
{

public void show(){
System.out.println("使用excel");
}

}

分別將四個程式編譯成*.class,然後執行java -verbose:class office word,表示你現在只想使用office中word的功能,其他的功能並不會載入記憶體中,雖然你的office還提供excel但因為目前沒用到所以就不需載入記憶體中,以節省空間
再者假若有一天你有錢了想對office的功能做擴充,如增加powerpoint或是frontpage的功能,你的office類別並不需要做更動,只需補上需要的類別功能即可
換句話說office的功能可以慢慢增加,並不一定要一次完成
這也就是為什麼java程式要做如此細緻的分工原因

5.有關java的執行環境,jre這個東西也是困擾我多時的東西,它是java程式的工作環境,相當於是一部PC,一般我們安裝完JDK之後都會被裝上兩套JRE,這麼一來就相當於我們有兩台PC,有如一台是桌上型的電腦,一台是筆記型電腦
在筆記型電腦中所安裝的程式桌上型電腦是無法使用的,假如你在筆記型電腦中安裝office卻想要在桌上型電腦執行office這是絕無可能的事。
問題就出在這裡,在安裝JDK時我麼就會有兩個PC的工作環境,假如又安裝JBuilder則又會在增加,這麼多台虛擬PC你現在到底在使用哪一台,你清楚嗎?
你是否在你要使用的那一台PC中安裝了你需要的軟體(*.jar),如果你將軟體(*.jar)放在錯誤的機器上,你一被子也無法執行你的程式,就如同上述安裝Office的例子
一般而言JDK會幫你安裝兩套JRE一套位於你安裝java的路徑下jre目錄下,另一個安裝在C:\Program Files\Java
在正常情況下java會先找到他自己所屬的jre,比如說你的java程式安裝在c:\java下,而你所執行的java.exe是位於c:\java\bin下,則先使用c:\java\jre,如果找不到則根據環境變數的path依序找尋,如果都找不到就會到註冊表中去找
所以我們在執行java程式之前要先確定所使用的jre是哪一個
 
 
JAVA多型簡介

office.java的檔案內容
class office{
void show(){
System.out.println("目前正在使用Office");
}
}


word.java的檔案內容
class word extends office{
void show(){
System.out.println("目前正在使用word");
}
}


excel.java的檔案內容
class excel extends office{
void show(){
System.out.println("目前正在使用excel");
}
}


Main.java的檔案內容
/*
這一個範例說明了一個多型的例子
雖然myshow()這個函數接收office型態的資料,但也接收了以office型態為baseclass的資料
例如word和excel這兩個型態都是自office所延伸出來
*/
class Main{
void myshow(office o){
o.show();
}
public static void main(String argv[]){
office o=new office();
word w=new word();
excel e=new excel();
Main m=new Main();
m.myshow(w);
m.myshow(e);
}
}


將Main.java程式組譯成Main.class,利用指令Java Main.java
然後執行java Main
則結果如下:
目前正在使用word
目前正在使用excel
雖然myshow所要傳入的資料需要office的型態,但word與excel的型態亦接受 
arrow
arrow
    全站熱搜

    CJY0503 發表在 痞客邦 留言(0) 人氣()