(變量、package及import、javabean、this)
一、變量
成員變量:包括類變量(static修飾)和實(shí)例變量(無(wú)static)
成員變量,可以先使用后定義,局部變量必須先定義而后才能使用.
此處參考java編程思想第5章初始化部分——p94頁(yè)及之后,
變量會(huì)在任何方法(包括構(gòu)造器)被調(diào)用之前得到初始化
某個(gè)類中有靜態(tài)變量,new此類的對(duì)象,只是new它的非靜態(tài)成員
靜態(tài)初始化只在Class對(duì)象首次加載的時(shí)候進(jìn)行一次
二、package和import及其他
package語(yǔ)句必須是文件中的第一行非注釋程序代碼。
基本語(yǔ)法不做贅述,此處摘錄一段
Java解釋器的工作程序如下:首先,它找到環(huán)境變量CLASSPATH。從根目錄開(kāi)始,解釋器會(huì)尋找包名,并將每個(gè)點(diǎn)號(hào)(句點(diǎn))替換成一個(gè)斜杠,從而生成從CLASSPATH根開(kāi)始的一個(gè)路徑名(所以package foo.bar.baz會(huì)變成foo\bar\baz或者foo/bar/baz;具體是正斜杠還是反斜杠由操作系統(tǒng)決定)。得到的路徑會(huì)與CLASSPATH中各個(gè)不同的項(xiàng)相連接,解釋器就在這些目錄中查找與你所要?jiǎng)?chuàng)建的類名稱相關(guān)的 ?.class文件。
對(duì)于初學(xué)者來(lái)說(shuō):可以簡(jiǎn)單理解為指定搜索路徑,使得你可以使用javac和java命令找到你所需要編譯的文件。
import:當(dāng)A類和B類不在同一個(gè)包中,若A類需要使用到B類,此時(shí)就得讓A類中去引入B類.
語(yǔ)法格式: import 需要導(dǎo)入類的全限定名;
類的全限定名稱: 包名.類名; ? 例如:import java.util.Arrays; 或者 ? ?import java.util.*;
其他:靜態(tài)導(dǎo)入 ? 例如 ?import static utils.Print.print; ? ? ? ?
則可以直接使用自己編寫(xiě)的工具類中的靜態(tài)print方法 ?print("123");
查看interview項(xiàng)目,具體git鏈接待發(fā)布。
三、JavaBean規(guī)范
JavaBean規(guī)范: JavaBean 是一種JAVA語(yǔ)言寫(xiě)成的可重用組件(類).
必須遵循一定的規(guī)范:
? ? ? 1):類必須使用public修飾.
? ? ? 2):必須保證有公共無(wú)參數(shù)構(gòu)造器,即使手動(dòng)提供了帶參數(shù)的構(gòu)造器,也得提供無(wú)參數(shù)構(gòu)造器..
? ? ? ?3):包含了屬性的操作手段(給屬性賦值,獲取屬性值).
分類: 1):復(fù)雜:UI,比如Button,Panel,Window類.
????????????2):簡(jiǎn)單:domain,dao,service組件,封裝數(shù)據(jù),操作數(shù)據(jù)庫(kù),邏輯運(yùn)算等.(封裝有字段,并提供getter/setter)
成員: 1):方法:Method 2):事件:event 3):屬性:property
屬性: 1):attribute:表示狀態(tài),Java中沒(méi)有該概念,很多人把字段(Field)稱之為屬性(attribute).不要把成員變量叫做屬性
2):property: 表示狀態(tài),但是不是字段,是屬性的操作方法(getter/setter)決定的,框架中使用的大多是是屬性.
封裝應(yīng)該把對(duì)象中信息隱藏起來(lái)(把類中的字段全部使用private修飾起來(lái),其他類不能直接訪問(wèn)).為了能讓外界(其他類)訪問(wèn)到本類中的私有字段成員,我們專門提供getter以及setter方法.
字段: private String name;
getter方法: 僅僅用于獲取某一個(gè)字段存儲(chǔ)的值.
//去掉get,把首字母小寫(xiě),得到name1.此時(shí)name1才是屬性.
public String getName1(){ return name;//返回name字段存儲(chǔ)的值}
如果操作的字段是boolean類型的,此時(shí)不應(yīng)該叫做getter方法,而是is方法,把 getName 變成 isName.
setter方法: 僅僅用于給某一個(gè)字段設(shè)置需要存儲(chǔ)的值.
public void setName1(String n){ name = n;//把傳過(guò)來(lái)的n參數(shù)的值,存儲(chǔ)到name字段中}
每一個(gè)字段都得提供一對(duì)getter/setter.以后使用Eclipse工具之后getter/setter都是自動(dòng)生成.
在JavaBean中有屬性這個(gè)概念,只有標(biāo)準(zhǔn)情況下字段名和屬性名才相同.
四、this
? ? ? 表示當(dāng)前對(duì)象,
? ? ? this主要存在于兩個(gè)位置:
? ? ? ? ? ? ? 構(gòu)造器中:? 就表示當(dāng)前創(chuàng)建的對(duì)象.
? ? ? ? ? ? ? 方法中:? 哪一個(gè)對(duì)象調(diào)用this所在的方法,那么此時(shí)this就表示哪一個(gè)對(duì)象.
當(dāng)一個(gè)對(duì)象創(chuàng)建之后,JVM會(huì)分配一個(gè)引用自身的引用:this.
使用this:
① 解決成員變量和參數(shù)(局部變量)之間的二義性,必須使用;
② 同類中實(shí)例方法間互調(diào)(此時(shí)可以省略this,但是不建議省略)。
③ 將this作為參數(shù)傳遞給另一個(gè)方法;
④ 將this作為方法的返回值(鏈?zhǔn)椒椒ň幊?;
⑤ 構(gòu)造器重載的互調(diào),this([參數(shù)])必須寫(xiě)在構(gòu)造方法第一行;
⑥ static不能和this一起使用; 當(dāng)字節(jié)碼被加載進(jìn)JVM,static成員以及存在了. 但是此時(shí)對(duì)象還沒(méi)有創(chuàng)建,沒(méi)有對(duì)象,就沒(méi)有this.
多練習(xí),注意eclipse快捷鍵提高效率。