一些關鍵詞語,一些知識點的理解
-
final 表示該值被創(chuàng)建并初始化后具有不可被更改性。被final修飾的類不可被繼承,被final修飾的類不可被子類覆蓋。被final修飾的類所有方法自動成為final方法,但是域不會自動變成final域。
static 表示該值從實例域變?yōu)殪o態(tài)域,并具有唯一性(一般static和final一起使用的時候,static在final前面) - 靜態(tài)方法:不能對對象實施操作,不能訪問實例域;沒有this參數(shù);可以訪問自身類中的靜態(tài)域。兩種情況使用靜態(tài)方法:1.一個方法不需要訪問對象狀態(tài),其所需參數(shù)都是通過顯式參數(shù)提供(例如,
Math.pow(x, a);
,用于計算冪x^a,x的a次冪,不使用任何Math對象);2.一個方法只需要訪問類的靜態(tài)域。 - 非public類和public類都可以有main方法,常用于對類進行單元測試。如果要運行整個工程,可以用java Application來運行,非public類的main方法不會運行。
- 實例域如果不顯式初始化,系統(tǒng)會自動賦值默認值:數(shù)值型為0,布爾值為false,對象引用為null等。而方法里的那些局部變量如果不顯式初始化,系統(tǒng)不會自動賦值,而是一些隨機值。
- 構造器的執(zhí)行處理過程
1) 所有數(shù)據(jù)域被初始化為默認值(0,null,false)
2) 按照在類聲明中出現(xiàn)的順序,依次執(zhí)行所有域初始化語句和初始化塊
3) 如果構造器第一行調用了第二個構造器,則執(zhí)行第二個構造器主體
4) 執(zhí)行這個構造器主體 - javadoc從下面幾個特性中抽取信息:
1)包
2) 公有類和接口
3) 公有的和受保護的構造器和方法
4) 公有的受保護的域
如果文檔中有其他文件的鏈接,比如圖像文件(用戶界面的組件的圖表或圖像等),就應該將這些文件放到子目錄doc-files中。 - java.lang包是被默認導入的。
- 出現(xiàn)超類對象的任何地方都可以用子類對象置換。
如:(new Manager() 創(chuàng)建的對象代替了new Employee()創(chuàng)建的對象)
Employee e;
e = new Employee();//Employee object expected
e = new Manager();//Manager can be used as well
但是在具體應用中,還是要遵守繼承的規(guī)則。 - 動態(tài)綁定/方法表
??對象調用非private,staitc,final方法時所用的一種生成調用指令的方式。當程序運行,并采用動態(tài)綁定調用方法時,為了減少搜索方法的時間開銷,虛擬機會為每個類創(chuàng)建一個方法表,其中列出了所有方法的簽名和實際調用的方法。
??比如,Manager類中有三個繼承來的方法,一個重寫的方法,一個新增的方法。
??Manager:
??gerName()->Employee.getName()
??getSalary()->Manager.getSalary()
??getHireDay()->Employee.getHireDay()
??getSalary(double)->Employee.getSalary(double)
??getBonus->Manager.getBonus()
??在運行的時候,調用e.getSalary()的解析過程:
1) 首先,虛擬機提取e的實際類型的方法表。既可能是Employee、Manager,也可能是Employee類的其他子類的方法表。
2) 接下來,虛擬機搜索定義getSalary簽名的類。
3) 最后,虛擬機調用方法。虛擬機會調用與e所引用對象的實際類型最合適的那個方法。假如e的實際類型是D,C是D的父類。如果是D定義了e,就調用它;否則,在C中查找e,以此類推。
一些詞匯
- abbreviation 省略,簡化,縮寫詞
- annotation 注釋
- associated 關聯(lián)(的),聯(lián)合(的),合伙人
- binary 二進位的,二進制數(shù)
oct 八進制數(shù)
decimal 十進位的,小數(shù)的,小數(shù)
hex 十六進制數(shù) - cannot be resolved 不能被識別(未聲明等)
- collaboration 協(xié)作
- capacity 容量
size 大小 - defined 已被定義的
- definitive 最后的,不可更改的
- demonstrate 演示,證明
- diagram 圖表,圖解,示意圖
- dynamic 動態(tài)(的)
- execute/execution 執(zhí)行,完成
- executive 【計算機】執(zhí)行指令;總經(jīng)理,行政部門(的)
- generic 一般的,泛型
- handler 處理器
- hierarchy 【計算機】層次;等級制度
- implicit/explicit 隱式/顯式
- invoke 請求,祈求
- javadoc (文檔提取工具,從源文件中生成一個HTML文檔)
- merge 混合,融入
- mutable/immutable 可改變的/不可改變的
- notification 通知,布告
- overloading resolution 重載解析
- polymorphism 多態(tài)性,多機組合形式
- primitive 基本的,原始的
- propose 建議,打算,計劃
- reflection 反射
- signature 簽名
- snapshot 快照
- spreadsheet 電子表格程序
- statement 聲明
- submit 提交
- utility 實用程序
一些類
- Random
Random random = new Random();
int id = random.nextInt(1000);//nextInt(n) 返回0~(n-1)中的任一整數(shù)數(shù)
- indexOf
java子字符串的查找方法:
int indexOf(String b)
:返回指定子字符串第一次出現(xiàn)的索引
int indexOf(String b, int startIndex)
:返回給定位置之后第一次出現(xiàn)指定子字符串的索引
int lastIndexOf(String b)
:返回出現(xiàn)指定子字符串的最后一個索引
int lastIndexOf(String b, int startIndex)
:從指定索引出開始向后搜索,返回在此字符串中出現(xiàn)制定子字符串的最后的索引
如果在字符串中不含有指定子字符串,返回-1
類的設計技巧
- 一定要保證數(shù)據(jù)私有
- 一定要對數(shù)據(jù)初始化
- 不要在類中使用過多的基本類型
- 不是所有的域都需要獨立的域訪問器和域更改器
- 將職責過多的類進行分解
- 類名和方法名要能夠體現(xiàn)它們的職責