編程規(guī)范:
l 大括號(hào)成對(duì)寫(xiě)
l 左括號(hào)有空格
l 遇左括號(hào)Tab
l 程序塊之間有空行
l 運(yùn)算符兩側(cè)加空格
l 并排語(yǔ)句之間加空格
注釋?zhuān)?/p>
單行注釋 //
多行 /* */
文檔 /** **
關(guān)鍵字:
關(guān)鍵字全部小寫(xiě),goto和const為保留字
標(biāo)識(shí)符:
不能以數(shù)字開(kāi)頭,_ 和 $都可以
大小寫(xiě)規(guī)范:
1. 包(文件夾) 全部小寫(xiě)
2. 類(lèi)和接口 一個(gè)或多個(gè)單詞首字母大寫(xiě)(駝峰)
3. 方法和變量 一個(gè)單詞小寫(xiě),多個(gè)第二個(gè)單詞大寫(xiě),setName
4. 常量 一個(gè)單詞大寫(xiě),多個(gè)加下劃線_ MAX MAX_NUMBER
對(duì)象定義:代表現(xiàn)實(shí)世界中可以明確標(biāo)識(shí)的一個(gè)實(shí)體。比方說(shuō)一個(gè)學(xué)生,一個(gè)女人。
對(duì)象有兩部分:
A. 狀態(tài)(state),也稱(chēng)為特征(PRoperty)或者屬性(attribute),是指當(dāng)前的數(shù)據(jù)域。比方說(shuō)吧,一個(gè)女的三維。
B. 行為(behavior)或者叫動(dòng)作(action)由方法定義。調(diào)用對(duì)象的方法就是要求對(duì)象完成一個(gè)動(dòng)作。如果我們把女人當(dāng)作對(duì)象的話,那么調(diào)用測(cè)三維的方法就可以得知該女生三維的具體值。
說(shuō)清楚了對(duì)象,我們?cè)賮?lái)總結(jié)下類(lèi),類(lèi)的書(shū)面定義:使用一個(gè)通用類(lèi)來(lái)定義同一個(gè)類(lèi)型的對(duì)象。類(lèi)是一個(gè)模板、藍(lán)本,用來(lái)定義對(duì)象的數(shù)據(jù)域是什么以及該方法是做什么的。一個(gè)對(duì)象(object)是類(lèi)的一個(gè)實(shí)例(instance)。其實(shí)說(shuō)了半天,如果女人是個(gè)對(duì)象的話,各種職業(yè)的女性就是女人的具體實(shí)例(instance),我們用女人這個(gè)類(lèi)來(lái)定義女人的通用特征,比方說(shuō)顏值,三維,身高,體重等等,他還有很多行為(behavior),炒菜呀,做飯呀,化妝呀等等。
C.構(gòu)造方法(constructor),一種特殊類(lèi)型的方法,有兩個(gè)作用:
1 創(chuàng)建一個(gè)新對(duì)象;
2 構(gòu)造方法可以完成任何動(dòng)作,但初衷是為了完成初始化動(dòng)作。
現(xiàn)在我們清楚了類(lèi)的組成了,下面是一個(gè)例子,
public class Object { double bust = 30; //所謂的狀態(tài),數(shù)據(jù)域 Object () { } Object(double newBust) { //有參構(gòu)造和無(wú)參構(gòu)造 bust = newBust; } doublegetbust() { //方法 return bust; }}另外類(lèi)的模板和對(duì)象的圖解可以使用統(tǒng)一建模語(yǔ)言(Uified Modeling language,UML)表示,看著挺方便的。在這就不畫(huà)了。以上是自己學(xué)習(xí)時(shí)的理解,如有不妥地方,歡迎指正。
1.2對(duì)象的構(gòu)造和引用
先講一下構(gòu)造方法,構(gòu)造方法作為一種特殊的方法,最主要的作用就是使用new來(lái)構(gòu)造對(duì)象,它們有以下三個(gè)特殊特性:
A. 構(gòu)造方法必須具備和所在類(lèi)相同的名字;
B. 構(gòu)造方法沒(méi)有具體的返回類(lèi)型,甚至連void都沒(méi)有;
C. 構(gòu)造方法是在創(chuàng)建一個(gè)對(duì)象時(shí),使用new操作符時(shí)調(diào)用的,構(gòu)造方法的作用是初始化對(duì)象。另外構(gòu)造方法也可以重載,這樣可以使不同初始數(shù)據(jù)值來(lái)構(gòu)造對(duì)象。
一般情況下,一個(gè)類(lèi)會(huì)提供一個(gè)沒(méi)有參數(shù)的構(gòu)造方法,稱(chēng)為無(wú)參構(gòu)造(no-arg(argument)constructor)。沒(méi)有明確定義的話,類(lèi)會(huì)自動(dòng)生成。
然后在寫(xiě)一下引用變量,對(duì)象是通過(guò)引用變量(referencevariable)來(lái)訪問(wèn)的,該變量包含對(duì)對(duì)象的引用。下面講如何引用:
1) 聲明:類(lèi)名對(duì)象引用變量,我就直接使用書(shū)上的例子了,Circlemycircle;
2) 引用:對(duì)象引用變量 = new 構(gòu)造方法,myCircle = new Circle();其實(shí)就是new創(chuàng)建一個(gè)對(duì)象,并把該對(duì)象的引用賦給變量。
3) 聲明引用:類(lèi)名 對(duì)象引用變量 = new 構(gòu)造方法,這樣便完成從創(chuàng)建對(duì)象,聲明引用變量和把該對(duì)象的引用賦值給引用變量,CirclemyCircle = new Circle()。
創(chuàng)建一個(gè)對(duì)象之后,可以用圓點(diǎn)運(yùn)算符(.)來(lái)訪問(wèn)和調(diào)用。三個(gè)詞,實(shí)例變量(instancevariable),實(shí)例方法(instancemethod)和調(diào)用對(duì)象(callingobject)。這里有幾個(gè)要注意的點(diǎn);
a) 靜態(tài)方法可以通過(guò)類(lèi)名.實(shí)例方法來(lái)調(diào)用;
b) 創(chuàng)建對(duì)象之后可以不引用,這就是后面的匿名對(duì)象(anonymous object),可以用new 構(gòu)造方法.方法,做一些返回值的使用。
c) 如果沒(méi)有引用任何對(duì)象,
l 引用類(lèi)型默認(rèn)值null;
l 數(shù)值類(lèi)型默認(rèn)值0;
l Boolean類(lèi)型默認(rèn)值false;
l Char類(lèi)型默認(rèn)值‘/u0000’;
1.3 基本類(lèi)型變量和引用變量的區(qū)別
每個(gè)變量都代表一個(gè)存儲(chǔ)值的內(nèi)存位置。聲明一個(gè)變量,就是再告訴編譯器這個(gè)變量可以存放什么類(lèi)型的值。區(qū)別如下:
i. 基本類(lèi)型變量,存儲(chǔ)的是基本類(lèi)型值;將基本變量賦值給另一個(gè)變量時(shí),是將變量的實(shí)際值賦給另一個(gè)變量;
ii. 引用類(lèi)型變量,存儲(chǔ)的是一個(gè)引用,是對(duì)象的存儲(chǔ)地址;對(duì)于一個(gè)引用變量來(lái)說(shuō),賦值的時(shí)候,是把變量的引用賦值給另一個(gè)變量。
還有需要知道的兩點(diǎn),第一,當(dāng)不需要某個(gè)對(duì)象時(shí),可以顯示賦值null。第二,如果對(duì)象沒(méi)有被任何引用變量所引用,Java虛擬機(jī)將自動(dòng)回收它所占的空間,但不一定是立即回收,所以java程序挺占內(nèi)存的。
另外Java中只有一種參數(shù)傳遞方式:值傳遞(pass byvalue)。
A. 基本類(lèi)型變量,傳遞的是實(shí)參的值。
B. 引用類(lèi)型變量,傳遞的是對(duì)象的引用。傳遞對(duì)象的引用在C里面叫傳遞地址值,個(gè)人感覺(jué)這樣說(shuō)更好理解。傳遞引用類(lèi)型變量時(shí),注意到它是處理相同引用(共同地址的內(nèi)容),還是只處理傳過(guò)來(lái)參數(shù)的指向。
再舉一個(gè)例子,會(huì)了這個(gè)我才覺(jué)得是真的理解了基本類(lèi)型和引用類(lèi)型在值傳遞上的區(qū)別,
public static void main(String[] args) { // TODO Auto-generated method stub Date date = new Date(1234567); m1(date); System.out.println(date.getTime()); } public static void m1(Date date) { date = new Date(7654321); System.out.println(date.getTime()); }}1.4靜態(tài)變量、常量和方法
一、 靜態(tài)變量:
如果想讓一個(gè)類(lèi)的所有實(shí)例共享數(shù)據(jù),就要使用靜態(tài)變量(static variable),也稱(chēng)之為類(lèi)變量(classvariable)。靜態(tài)變量把變量值存儲(chǔ)在一個(gè)公共的內(nèi)存地址。另外無(wú)需創(chuàng)建實(shí)例,就可以調(diào)用靜態(tài)方法(staticmethod)和靜態(tài)變量(static variable),這樣的好處是提高了程序的可讀性。
提到靜態(tài)變量,不得不再提下靜態(tài)方法,不能從靜態(tài)方法中調(diào)用實(shí)例方法或者引用一個(gè)實(shí)例變量,但是可以從實(shí)例方法中調(diào)用靜態(tài)方法和變量。我們都知道在測(cè)試類(lèi)中,也就是有main的類(lèi)中,用到的大部分是靜態(tài)方法。這些看似不經(jīng)意的小問(wèn)題,現(xiàn)在想想也挺有意思的。因?yàn)閙ain也是靜態(tài)方法,所以它調(diào)用的也必須都是靜態(tài)方法,調(diào)用實(shí)例方法都會(huì)發(fā)生錯(cuò)誤。但是這又是為什么呢?原因很簡(jiǎn)單,靜態(tài)變量和方法創(chuàng)建早于實(shí)例方法和變量。下面就是一個(gè)錯(cuò)誤的例子:
public class Foo { int i =5; static int k =2; public static void main(String[] args) { int j = i; m1(); } public m1(){ i = i + k; } public static int m2(int i, int j) { return (int)(Math.pow(i, j)) }}改正的話,就是在主方法main中創(chuàng)建一個(gè)Foo對(duì)象然后在引用就ok,Foofoo = new Foo();
Intj = foo.i;
foo.m1();
二、 常量
常量也應(yīng)該是所有實(shí)例所共享的,常量應(yīng)該被聲明為 final static。
三、變量的作用域
實(shí)例變量和靜態(tài)變量成為類(lèi)變量(class’svariable)或數(shù)據(jù)域(data field)。類(lèi)變量的作用域是整個(gè)作用域。類(lèi)的變量和方法可以以任意順序出現(xiàn)。除了一個(gè)數(shù)據(jù)域是基于另一個(gè)數(shù)據(jù)域初始化的。
如果一個(gè)局部變量和一個(gè)類(lèi)變量具有相同的名字,那么局部變量?jī)?yōu)先,同名的類(lèi)變量將被隱藏。 想要在方法中使用類(lèi)變量,就要使用this來(lái)引用類(lèi)的隱藏?cái)?shù)據(jù)域(hiddendata field)。當(dāng)然如果是靜態(tài)變量還可以使用類(lèi)名.靜態(tài)變量的方法。 另外,this還可以用來(lái)調(diào)用同一個(gè)類(lèi)的其他構(gòu)造方法。如下例所示:
public classCircle { private double radiu; public Circle (double radiu) { this.radiu = radiu;} Public Circle() { this(1);}}
1.6 對(duì)象數(shù)組
對(duì)象的數(shù)組實(shí)際上是引用變量的數(shù)組。如下例所示:
聲明創(chuàng)建創(chuàng)建含有5個(gè)Woman對(duì)象的數(shù)組,
Woman[]woman = new Woman[5];
初始化數(shù)組,可以用for循環(huán):
for(int i =0; i < 5; i++) {
woman[i]= new Woman();
}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注