public class HelloWorld extends Applet { String title; public void init(){ title="Hello World"; }
public void paint(Graphics g) { g.drawString(title,50,20); }
}
我們可以看到,程序中是沒(méi)有主函數(shù)的,那它如何運(yùn)行呢.既然Applet是在瀏覽器環(huán)境下運(yùn)行的,那我們就需要在HTML文件中來(lái)調(diào)用它.需要使用的相關(guān)標(biāo)簽就是<Applet>標(biāo)簽,我們首先建立HTML文件test.htm,源代碼如下. <html> <body> Here comes my first applet: <br> <applet code=HelloWorld.class width=650 height=500> </applet> </APPLET> </body> </html>
入門(mén)之后,就該深入到對(duì)象的概念了。 假設(shè)在Java中創(chuàng)建了一個(gè)叫做Date的自定義數(shù)據(jù)類型如下 public class Date{ int day; int month; int year; } 那么對(duì)于以下三條聲名變量的語(yǔ)句,java在為其分配內(nèi)存的時(shí)候有什么不同嗎? (1) int i; (2) Date mybirth; (3) Date mybirth=new Date();
很顯然是有的,分配情況如下: (1)Java自動(dòng)為整數(shù)i分配整形變量的內(nèi)存,一般是兩個(gè)字節(jié) (2)Java聲明了一個(gè)Date類的實(shí)例變量mybirth,并為其分配了存儲(chǔ)空間,但這個(gè)存儲(chǔ)空間里面存儲(chǔ)的只是一個(gè)引用,或者說(shuō)是一個(gè)地址,目前的地址里面什么都沒(méi)有,那么我們就還不能使用這個(gè)實(shí)例變量,不能引用它的成員。 (3)Java創(chuàng)建了一個(gè)Date類的實(shí)例變量mybirth,并為其成員變量分配了足夠的存儲(chǔ)空間,最后返回對(duì)這個(gè)存儲(chǔ)空間的一個(gè)引用,也就是返回這個(gè)存儲(chǔ)空間的首地址,以后就通過(guò)mybirth,即這個(gè)首地址來(lái)訪問(wèn)這個(gè)實(shí)例變量里面的各個(gè)成員,如mybirth.day,mybirth.month,mybirth.year。 當(dāng)我們聲明一個(gè)基本數(shù)據(jù)類型的變量(如boolean, byte, short, char, int,long,flat,double)時(shí),系統(tǒng)會(huì)自動(dòng)為變量分配內(nèi)存。但是假如聲明了String或者用戶自定義的變量時(shí),系統(tǒng)不會(huì)立即為其分配內(nèi)存.為什么會(huì)這樣呢? 這是因?yàn)?String和用戶自定義的變量都屬于類的范疇.一個(gè)被聲明為類的變量,已經(jīng)不再是一個(gè)數(shù)據(jù)了,而變成對(duì)數(shù)據(jù)的一個(gè)引用,就是說(shuō)mybirth可以看作是一個(gè)指向類的一個(gè)實(shí)例的指針,里面存放的是地址.這樣的話就好理解了。 深入一點(diǎn),既然類的實(shí)例變量值是指針,這個(gè)指針指向一個(gè)類的實(shí)例,那么我們顯然可以定義多個(gè)名稱不同的類的實(shí)例變量,而將它們?nèi)贾赶蛞粋€(gè)實(shí)例.比如 University u=new University();//定義了一個(gè)類University的實(shí)例變量u,并為其分配對(duì)象的存儲(chǔ)空間 University u2=u;//又定義了一個(gè)實(shí)例變量u2,將u的值賦給u2 那么顯然u2和u除了名稱不同外,其實(shí)是一回事,因?yàn)樗鼈冎赶蛳嗤粋€(gè)地址.