⑴ 怎樣理解java的「構造方法」和「主方法」
在類中除了成員方法之外,還存在一種特殊類型的方法,那就是構造方法。主方法是類的入口點,它定義了程序從何處開始;主方法提供對程序流向的控制,Java編譯器通過主方法來執行程序。那麼,下面一起來看一下關於「構造方法」和「主方法」的基本知識吧
工具/原料
Eclipse
java
一、類的構造方法
1
構造方法是一個與類同名的方法,對象的創建就是通過構造方法完成的。每當類實例化一個對象時,類都會自動調用構造方法。
構造方法的特點如下:
構造方法沒有返回值。
構造方法的名稱要與本類的名稱相同。
2
舉例如下:
從例子可以看出定義了兩個構造方法,在無參構造方法中可以使用this關鍵字調用有參的構造方法,但使用這個方法需要注意的是只可以在無參構造方法中的第一句使用this調用有參構造方法。
6
這個程序參數就設置完畢了
⑵ 介紹下Java程序的結構
Java語言是面向對象的程序設計語言,Java程序的基本組成單元是類,類體中又可包括屬性與方法兩部分。而每一個應用程序都必須包含一個main()方法,含有main()方法的類稱之為主類。
一: Java程序的主類及其格式
作為一個可以獨立運行的Java程序,在它的眾多類中必須要有一個類作為程序的起始類,為了方便,本書把這個類稱為主類。當需要執行一個程序時,人們在java命令後面輸入的便是這個主類的文件名(也是主類名),因此主類文件是Java運行環境建立起來之後第一個被裝入虛擬機的用戶文件。為了使虛擬機可以找到程序運行的起始入口,主類必須為public類,並含有一個在格式上符合約定的入口方法main(),其格式如下:
public static void main(String[] args){
…
}
其中各參數含義如下。
main:入口方法名稱。
args:命令行參數,這是一個String對象數組。
static:修飾字,說明main()是一個靜態方法(類方法)。
public:修飾字,說明main()具有公有訪問屬性。
於是,主類框架的源代碼如下:
public class 主類名{
…
public static void main(String[] args){
…
}
}
Java程序的主類常常使熟悉C/C++的讀者感到迷惑:main()方法不就相當於C/C++程序中的主函數嗎,為什麼非得把它放到一個類里,難道它有什麼不同嗎?
沒錯,Java類中main()方法就相當於C/C++程序中的主函數,是一個入口函數。之所以把它封裝到一個類里,而不像C/C++那樣單獨作為一個函數來處理,就本書作者的理解,大概Java的設計者們有如下幾個方面的考慮。
1)Java既然把所有事物都看成了對象,那麼就沒有理由不把程序也看成對象,因為程序也是一種事物。既然是對象,那麼它就應該屬於某個類並以程序名來命名。既然程序是一種類,那麼main()就應該是這個類的一個方法,只不過它有些特殊,它是一個入口方法,並且對它有些特殊規定,例如其名稱必須為main(),必須是公有靜態方法,有命令行參數等。
2)如果把程序封裝成了類,那麼包括本程序在內的任何程序就都可以根據需要,隨時創建這個類的對象,並通過該對象使用這個類中的資源,這樣就便於資源共享,從而提高程序的靈活性。
3)Java程序是一種以類為基本單位的模塊化程序,程序被編譯後,每一個類會對應生成一個二進制位元組碼類文件。如果把程序也封裝成類,那麼它的文件就與其他類文件統一起來,而不會產生其他類型的文件,因而便於管理。
4)之所以把入口方法封裝到類中,其根本目的就是要盡可能平等地看待所有的類。因為Java的最終目的是要以類為基本模塊來實現可裝配軟體,如果把main()方法封裝到了一個類中,那麼就意味著main()與類的其他方法沒什麼本質區別,只不過是分工不同而已。下面很快就會看到,Java的所有類都可以含有一個入口方法而成為主類。也就是說,在Java程序中根本就沒有主類、次類之分,這里之所以把帶有main()方法的類稱為主類,是為了表達方便。
二: JAVA源程序在命令行下的運行
classBank{
publicvoidinit(){
System.out.println("Yes,Ican");
}
publicstaticvoidmain(Stringargs[]){
BankAccountba1=newBankAccount(100.00);
System.out.print("Beforetransactions,");
ba1.display();
ba1.deposit(74.35);
ba1.withdraw(20.00);
System.out.print("Aftertransactions,");
ba1.display();
Bankb=newBank();
b.init();
}
}
classBankAccount{
privatedoublebalance;
publicBankAccount(doubleopeningBalance){
balance=openingBalance;
}
publicvoiddeposit(doubleamount){
balance+=amount;
}
publicvoidwithdraw(doubleamount){
balance-=amount;
}
publicvoiddisplay(){
System.out.println("balance="+balance);
}
}
三:完整的java源程序應該包括下列部分
package語句;
import語句;
public classDefinition; // 公共的類定義部分,至多隻有一個公共類的定義
// java語言規定該java源程序的文件名必須與該公共類名完全一致
classDefinition; // 類定義部分,可以有0個或多個
interfaceDefinition; // 介面定義部分,可以有0個或多個
package:java編譯器為每個類生成一個位元組碼文件,且文件名與類名相同,這就會帶來一個問題:同名的類會發生沖突。package便可管理類命名空間。
一般地,具有相同功能的類放在一個package中。
一個java源程序至多隻能有一個公共類的定義。
若java源程序有一個公共類的定義,則該源文件名字必須與該公共類的名字完全相同。
若源程序中不包含公共類的定義,則該文件名可以任意取名。
若一個源程序中有多個類定義,則在編譯時將為每個類生成一個。class文件。
三。java編程規范
包名:全小寫的名詞,中間可由點分割,eg:java.awt.event
類名:首字母大寫,多個單詞合成,每個單詞首字母也要大寫,eg: class HelloWorldApp
介面名: 同類名,eg: interface Collection
方法名: 由多個單詞合成,第一個單詞通常為動詞,首字母小寫,中間的每個單詞的首字母都要大寫,eg: balanceAccount, isButtonPressed
變數名: 全小寫,一般為名詞,eg: length
常量名: 基本數據類型的常量名為全大寫,如果由多個單詞構成,可以用下劃線隔開,eg: int YEAR, int WEEK_OF_MONTH
對象類型的常量,則是小寫混合,由大寫字母把單詞隔開
⑶ java 中關於主方法的寫法
這兩種都對!
實際上,main函數的小括弧裡面的是參數!它需要一個字元串類型的數組!
而在java中,聲明數組有兩種方法:
數據類型[] 變數名;
和數據類型 變數名[];
所以,兩種都是可以的!!
其實,你大可以自己寫個簡單的程序,測試一下就可以了!