菜鳥初學Java的備忘錄(二) (轉)
年1月16日 星期四 晴
的比我想象中的還要簡單的多,目前為止我已經對Java的基本語法結構有所瞭解.但我知道,深入的研究任何一門語言,都需要時間和實踐的積累.
Applet是Java編寫的可以在端執行的程式碼,它與應用的明顯區別在於其方式的不同,應用程式如C程式是從main()主程式開始執行的,而Applet則比較複雜.具體如何複雜我不太清楚,但我會慢慢清楚的。關於Applet的一個重要性質是,我可以將HTML中的值作為引數傳遞給Applet(透過getParameter()來獲取引數值).這樣,為了產生不同的效果,我們不需要重新編譯Java程式,而只需修改HTML的引數值即可.由於HTML的程式碼也可以動態生成的,因此我可以對網頁的動態效果進行隨心所欲的控制.
在Applet的生命週期中有3個比較主要的方法:init,start,stop
init():負責Applet的初始化,在整個Applet的生命週期中,只執行一次該方法.和中的OnCreate()事件是一樣的道理
start():在完init()後,將自動呼叫start(),並且每次當前視窗被重新啟用時,都會呼叫該方法,和Delphi中的OnShow()事件是差不多的。
stop():離開Applet所在頁面後呼叫該方法。它使你在使用者不注意Applet的時候,停止一些資源的工作以免影響系統執行.並且我們不需要人為地去掉該方法.該方法同Delphi中的OnClose()事件差不多。
下面是一個Applet版的HelloWorld
名:HelloWorld.java
import java.applet.Applet;
import java.awt.Graphics;
public class HelloWorld extends Applet
{
String title;
public void init(){
title="Hello World";
}
public void paint(Graphics g)
{
g.drawString(title,50,20);
}
}
我們可以看到,程式中是沒有主的,那它如何執行呢.既然Applet是在瀏覽器環境下執行的,那我們就需要在HTML檔案中來呼叫它.需要使用的相關標籤就是
將該檔案和HelloWorld.java放在同一個目錄中,然後編譯HelloWorld.java之後,直接點選test.htm開啟,就可以看到Applet程式被啟動了.或者使用AppletViewer命令AppletViewer test.htm也可以不需要瀏覽器直接執行該Applet.
下面一個程式可以更好的幫助我們理解Java Applet在整個生命週期是如何呼叫上面我們介紹的幾個方法的.
檔名:StartStop.java
import java.awt.*;
import java.applet.*;
public class StartStop extends Applet
{
StringBuffer message;
public void init()
{
message=new StringBuffer("Init done...");
}
public void start()
{
message.append("Started...");
}
public void stop()
{
message.append("Stopped...");
}
public void paint(Graphics g)
{
g.drawString(message.toString(),150,50);
}
}
執行方法同上.(該程式可參考機械工業的
同C語言不一樣,使用Java實現GUI要輕鬆的多。由於是純面向的語言,Java的AWT提供了各種介面元素供我們呼叫,如同Delphi裡面的一樣。下面是Java中的GUI物件和Delphi中的相應元件的對照表
Java Delphi
Button TButton
Canvas TCanvas
Checkbox TCheckbox
CheckboxGroup TRadioGroup
Choice TComboBox
Label TLabel
TextField TEdit
TextArea TMemo
然而,並不是視覺化的RAD(rd application development)開發工具,對於物件的使用不能如Delphi那樣只需要拖拉,移位就可以,而需要我們寫呼叫程式碼.這就產生了一個麻煩,我怎麼樣才能夠讓元素按我的要求在介面中擺放呢?在元素不多時可以讓Java自動佈局(Layout),但是元素很多時,或者需要根據應用程式的要求來擺放元素時,就需要使用皮膚了(Panel).皮膚在Delphi裡也有相應的元件(TPanel),但主要是用來對介面分割,進行粗略的佈局的,精確的定位還需要開發人員手動調節.而Java則只能用Panel來定位,不能不說是個缺陷.也許是我還沒學到吧。
入門之後,就該深入到物件的概念了。
假設在Java中建立了一個叫做Date的自定義資料型別如下
public class Date{
int day;
int month;
int year;
}
那麼對於以下三條聲名變數的語句,java在為其分配的時候有什麼不同嗎?
(1) int i;
(2) Date mybirth;
(3) Date mybirth=new Date();
很顯然是有的,分配情況如下:
(1)Java自動為整數i分配整形變數的記憶體,一般是兩個位元組
(2)Java宣告瞭一個Date類的例項變數mybirth,併為其分配了空間,但這個儲存空間裡面儲存的只是一個引用,或者說是一個地址,目前的地址裡面什麼都沒有,那麼我們就還不能使用這個例項變數,不能引用它的成員。
(3)Java建立了一個Date類的例項變數mybirth,併為其成員變數分配了足夠的儲存空間,最後返回對這個儲存空間的一個引用,也就是返回這個儲存空間的首地址,以後就透過mybirth,即這個首地址來訪問這個例項變數裡面的各個成員,如mybirth.day,mybirth.month,mybirth.year。
當我們宣告一個基本資料型別的變數(如boolean, byte, short, char, int,long,flat,double)時,系統會自動為變數分配記憶體。但是如果宣告瞭String或者使用者自定義的變數時,系統不會立即為其分配記憶體.為什麼會這樣呢?
這是因為,String和使用者自定義的變數都屬於類的範疇.一個被宣告為類的變數,已經不再是一個資料了,而變成對資料的一個引用,就是說mybirth可以看作是一個指向類的一個例項的指標,裡面存放的是地址.這樣的話就好理解了。
深入一點,既然類的例項變數值是指標,這個指標指向一個類的例項,那麼我們顯然可以定義多個名稱不同的類的例項變數,而將它們全都指向一個例項.比如
University u=new University();//定義了一個類University的例項變數u,併為其分配物件的儲存空間
University u2=u;//又定義了一個例項變數u2,將u的值賦給u2
那麼顯然u2和u除了名稱不同外,其實是一回事,因為它們指向相同一個地址.
我覺得弄清楚這一點還是很重要的。這些資料結構的東西,是一個程式設計師需要知道的所以然.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998342/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 菜鳥初學Java的備忘錄(五) (轉)Java
- 菜鳥初學Java的備忘錄(八) (轉)Java
- 菜鳥初學Java的備忘錄(七) (轉)Java
- 菜鳥初學Java的備忘錄(九) (轉)Java
- 菜鳥初學Java的備忘錄(四) (轉)Java
- 菜鳥初學Java的備忘錄(六) (轉)Java
- 菜鳥初學Java的備忘錄(十) (轉)Java
- 菜鳥初學Java的備忘錄(一) (轉)Java
- 菜鳥初學Java的備忘錄(三) (轉)Java
- 初學Java的備忘錄Java
- 【備忘】Java菜鳥到大牛學習路線之實戰篇Java
- 菜鳥學Java(十五)——Java反射機制(二)Java反射
- Linux C++ 自學筆記之二<菜鳥初學系列> (轉)LinuxC++筆記
- 【菜鳥學Java】2:初識J2EEJava
- Java備忘錄《集合》Java
- 菜鳥學Java(十七)——Jboss瘦身Java
- 菜鳥學Java(十八)——異常Java
- 菜鳥學習SQL注射(轉)SQL
- 菜鳥學Java(九)——Servlet的基本配置JavaServlet
- Java備忘錄《“==” 和 “equals”》Java
- 菜鳥學Java(十六)——Jboss簡介Java
- 菜鳥學Java(十一)——GET與POSTJava
- 【菜鳥學Java】11:Session技術JavaSession
- 【菜鳥學Java】10:Cookie技術JavaCookie
- 【菜鳥學Java】4:Servlet 技術JavaServlet
- Dart 學習備忘錄Dart
- 菜鳥學Java(十四)——Java反射機制(一)Java反射
- 一個菜鳥管理的學習和思考(二)
- 菜鳥學堂之破解Sessioncookie的方法(轉)SessionCookie
- 菜鳥學Java(十)——分頁查詢Java
- IT菜鳥的學習生活
- 【菜鳥學Java】7:JSP的基本語法JavaJS
- java菜鳥入門Java
- 菜鳥學資料庫(五)——MySQL必備命令資料庫MySql
- 備忘錄
- 【備忘錄】
- 菜鳥學Java(四)——JSP內建物件JavaJS物件
- Java備忘錄《語言特點》Java