基于《java2實用教程》的java知識點復(fù)習(xí)整理(第一章——第四章)
第一章——java入門
一、知識結(jié)構(gòu)框架

二、知識點詳解
1、java特點:編寫一次,隨處運行

簡單
Java要比C++簡單,C++中許多容易混淆的概念,被Java棄之不用了,或者以一種更清楚更容易理解的方式實現(xiàn)。
面向?qū)ο?/strong>
?Java是面向?qū)ο?/strong>的編程語言,本書將在第4、5和6章詳細、準(zhǔn)確地討論類、對象、繼承、多態(tài)、接口等重要概念。
平臺無關(guān)
?在一個計算機上編譯得到的字節(jié)碼文件可以復(fù)制到任何一個安裝了Java運行環(huán)境的計算機上直接使用。字節(jié)碼由Java虛擬機負責(zé)解釋運行。
這里所指的平臺是由操作系統(tǒng)(Operating System, OS)和處理器CPU所構(gòu)成。與平臺無關(guān)是指軟件的運行不因操作系統(tǒng)、處理器的變化而無法運行或出現(xiàn)運行錯誤。
每個平臺都會形成自己獨特的機器指令,所謂平臺的機器指令就是可以被該平臺直接識別、執(zhí)行的一種由0,1組成的序列代碼。相同的CPU和不同的操作系統(tǒng)所形成的平臺的機器指令可能是不同的。
比如,某個平臺可能用8位序列代碼00001111表示加法指令,以10000001表示減法指令,而另一種平臺可能用8位序列代碼10101010表示加法指令,以10010011表示減法指令。


分布式與安全性

2、java程序開發(fā)步驟

3、簡單的java應(yīng)用程序


4、java反編譯

5、java編譯風(fēng)格


6、java之父

三、題庫考查知識點整理
1、下列哪個是JDK提供的編譯器:javac.exe
2、Java應(yīng)用程序主類中正確的main方法:public static void main (String args[ ])
3、Java語言的名字是印度尼西亞一個盛產(chǎn)咖啡的島名
4、Java源文件是由若干個書寫形式互相獨立的類組成。
5、源文件的第4行有錯誤,無法識別system(應(yīng)該修改為System)
6、圖中左2是java之父:James Gosling,(禿頭)
7、如果源文件中有多個類,這些類可以都不是public類
8、源文件必須命名為E.java,編譯無錯誤。有兩個主類,E和A。程序可以執(zhí)行主類E也可以執(zhí)行主類A.
9、JDK的全稱是Java Development Kit,
10、源文件的名字必須是Cat.java。(public類)
11、如果源文件中只有一個類,這個類可以不是主類,因為主類只是執(zhí)行需要不是編寫需要
第二章——基本數(shù)據(jù)類型與數(shù)組

一、知識結(jié)構(gòu)框架

二、知識點詳解
1、標(biāo)識符與關(guān)鍵字


注意:
(1)Java的所有關(guān)鍵字都是小寫的,TRUE、FALSE和NULL都不是Java的關(guān)鍵字;關(guān)鍵字都是小寫的。遇到大寫肯定不是關(guān)鍵字。
(2)字面常量true、false或null都不能用作標(biāo)識符;
2、基本數(shù)據(jù)類型




3、類型轉(zhuǎn)換預(yù)算


引用數(shù)據(jù)類型的兩點說明

4、輸入、輸出數(shù)據(jù)



5、數(shù)組

數(shù)組屬于引用型變量,兩個相同類型的數(shù)組如果具有相同的引用,它們就有完全相同的元素。
訪問其他元素會產(chǎn)生數(shù)組越界錯誤,會出現(xiàn)異常:
ArrayIndexsOutOfBoundsException

三、題庫考查知識點整理
1、這項字符序列可以做為標(biāo)識符:_int
2、下列是正確的float變量的聲明:
float foo = 1;float foo = 0x0123;float c = ‘你’;float d = 3.14F;
3、char型字符在Unicode表中的位置范圍是0至65535
4、正確的char型變量的聲明:char ch = ‘\\’;char ch = ‘\t’;char ch = ‘\u1010’;char ch = ‘\ucafe’;
5、錯誤的char型變量的聲明:char ch = “R”;char ch = ‘\t\n’;
6、錯誤的float變量的聲明:float a = 1.19;float a = 2e3;char ch =’\u000M’;float height = 1eF;
7、正確的float常量:67F;
8、Java語言的關(guān)鍵字:int、import、extends
9、不是關(guān)鍵字:Class、Float、main、Int、implementt、NULL、System
10、錯誤的數(shù)組聲明:int a[5];
11、int型變量的取值范圍:-2^31 至 2^31-1
12、char型變量的取值范圍:0 至 2^16-1
13、1e2和2.05E2都是double型常量。
14、int [] a,b[];是聲明了1個int型一維數(shù)組a和1個int型二維數(shù)組b。
第三章——java運算符、表達式和語句
一、知識結(jié)構(gòu)框架

二、知識點詳解
1、運算符與表達式





2、語句概述
一個分號一個語句,{}是復(fù)合語句
Java里的語句可分為以下六類
–方法調(diào)用語句:如:System.out.println(" Hello");
–表達式語句:表示式尾加上分號。比如賦值語句:x=23;
–復(fù)合語句:可以用{ }把一些語句括起來構(gòu)成復(fù)合語句,
如:{ z=123+x;
System.out.println(“How are you”);
}
–空語句:一個分號也是一條語句,稱做空語句。
–控制語句:控制語句分為條件分支語句、開關(guān)語句和循環(huán)語句。
–package語句和 import語句:它們和類、對象有關(guān),將在第4章講解。
3、if條件分支語句

4、switch語句

5、循環(huán)語句

while語法說明:
循環(huán)條件的類型為布爾類型,指循環(huán)成立的條件;
花括號{}不是必須的,當(dāng)循環(huán)體中只有一條語句時,可以省略;
循環(huán)體是需要重復(fù)執(zhí)行的代碼。
do-while語法說明:
1.循環(huán)體是重復(fù)執(zhí)行的代碼部分,循環(huán)條件要求是布爾類型,值為true時執(zhí)行循環(huán)體,否則循環(huán)結(jié)束,最后整個語句以分號結(jié)束;
2.do-while語句是 “先循環(huán)再判斷”的流程控制結(jié)構(gòu)
6、break與continue語句
break退出本循環(huán)??continue跳過本循環(huán)
7、for語句與數(shù)組
其中,聲明的循環(huán)變量的類型必須和數(shù)組的類型相同。這種形式的for語句類似自然語言中的“for each”語句,為了便于理解上述for語句,可以將這種形式的for語句翻譯成“對于循環(huán)變量依次取數(shù)組的每一個元素的值”。
案例:質(zhì)數(shù)判斷

三、題庫考查知識點整理
1、5.0/2+10的結(jié)果是double型數(shù)據(jù)。
2、while(【代碼】) {:代碼運行結(jié)果為boolean類型
3、允許把不超出byte,char,short的取值范圍的int常量賦值給相應(yīng)的變量。但是注意,編譯器在編譯時并不計算’a’+x中變量x中的值,只是編譯出’a’+x表達式的值是int型數(shù)據(jù)。

4

把int類型賦值給char或者byte產(chǎn)生的錯誤
5、‘a(chǎn)’+10的結(jié)果是int型數(shù)據(jù)。計算結(jié)果自動轉(zhuǎn)化為最高精度
6、邏輯運算符、關(guān)系運算符的運算結(jié)果是boolean
7、switch語句中可以沒有default選項。
8、12 = 12 是非法的表達式。
9、for(表達式1; 表達式2; 表達式3)…語句中的“表達式2”的值必須是boolean型數(shù)據(jù)。
10、在while語句的循環(huán)體中,執(zhí)行break語句的效果是結(jié)束while語句。
11、表達式10>20-17的結(jié)果不是1,是true
12、(byte)3.14+1的結(jié)果是int型數(shù)據(jù)。
13、‘蘋’+ '果’的結(jié)果不是char型數(shù)據(jù)。
第四章——類與對象
類的實例就是對象
一、知識結(jié)構(gòu)框架


二、知識點詳解
1、面向?qū)ο笳Z言
封裝性:
封裝(Encapsulation)是面向?qū)ο蠓椒ǖ闹匾瓌t,就是把對象的屬性和操作(或服務(wù))結(jié)合為一個獨立的整體,并盡可能隱藏對象的內(nèi)部實現(xiàn)細節(jié)。
概念:
封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的訪問只能通過已定義的接口。面向?qū)ο笥嬎闶加谶@個基本概念,即現(xiàn)實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。封裝是一種信息隱藏技術(shù),在java中通過關(guān)鍵字private,protected和public實現(xiàn)封裝。什么是封裝?封裝把對象的所有組成部分組合在一起,封裝定義程序如何引用對象的數(shù)據(jù),封裝實際上使用方法將類的數(shù)據(jù)隱藏起來,控制用戶對類的修改和訪問數(shù)據(jù)的程度。 適當(dāng)?shù)姆庋b可以讓程式碼更容易理解和維護。
封裝作用:
① 對象的數(shù)據(jù)封裝特性徹底消除了傳統(tǒng)結(jié)構(gòu)方法中數(shù)據(jù)與操作分離所帶來的種種問題,提高了程序的可復(fù)用性和可維護性,降低了程序員保持數(shù)據(jù)與操作內(nèi)容的負擔(dān)。
②對象的數(shù)據(jù)封裝特性還可以把對象的私有數(shù)據(jù)和公共數(shù)據(jù)分離開,保護了私有數(shù)據(jù),減少了可能的模塊間干擾,達到降低程序復(fù)雜性、提高可控性的目的。
繼承:
子類可以繼承父類的屬性和行為,又可以增添子類獨有的屬性和行為。
多態(tài):
引用多態(tài)是指:父類引用可以指向本類對象,也可指向子類對象。引用多態(tài)的強大主要體現(xiàn)在調(diào)用屬性、方法時,可以根據(jù)引用具體指向的對象去調(diào)用,例如:子類中重寫了父類方法。
方法多態(tài):子類中可以重寫父類的方法,在調(diào)用方法時根據(jù)引用指向的子類對象決定調(diào)用哪個具體的方法。方法多態(tài)的強大主要體現(xiàn)在可以根據(jù)調(diào)用時參數(shù)的不同,而自主匹配調(diào)用的方法,例如:重載。
2、類
類使用class來聲明:class 類名{類體};
類名最好用字母且首字母大寫,類體含變量的聲明(體現(xiàn)對象屬性的值)和方法的定義(對類聲明的變量進行操作,即給出算法,體現(xiàn)對象具有的行為)
成員變量的類型可以為任何數(shù)據(jù)類型,在整個類中都有效,于其聲明位置無關(guān),最好一行聲明一個成員變量,利于添加注釋。
方法包含方法頭{方法體},方法可以返回任意類型,void表示不返回數(shù)據(jù)。
方法中的變量稱為局部變量,局部變量只在方法中有效,且與其聲明位置有關(guān),若局部變量與成員變量名字相同,則成員變量被隱藏,該成員變量在方法內(nèi)暫時失效。局部變量沒有默認值,成員變量有默認值
注意:對成員變量的操作只能在方法中進行
3、構(gòu)造方法與對象創(chuàng)建
**構(gòu)造方法:**一種特殊的方法,當(dāng)程序用類創(chuàng)建實例對象時需要使用它的構(gòu)造方法。構(gòu)造方法沒有類型,且與它所在的類的名字完全相同。允許在一個類中編寫若干構(gòu)造方法,但必須保證它們的參數(shù)不同(個數(shù)或者某個參數(shù)類型)。若未編寫構(gòu)造方法,系統(tǒng)會默認該類只有一個構(gòu)造方法(無參無語句)。
對象創(chuàng)建:
使用類的名字進行對象的聲明:類名 對象名;
使用new運算符和類的構(gòu)造方法為聲明的對象分配變量,即創(chuàng)建對象,若提供的構(gòu)造方法有參數(shù),則new創(chuàng)建對象時必須含參數(shù)。只聲明對象,則分配的內(nèi)存中沒有得到實體,不能使用,必須再進行為對象分配變量的操作。
new運算符賦值機制:
new運算符的運算結(jié)果是一個十六進制的數(shù),這個數(shù)被稱為對象的引用,引用前會給對象中的成員變量分配內(nèi)存空間,計算出應(yīng)用后才會給成員變量賦值。對象的引用存在棧中,對象的實體(分配給對象的變量)存在堆中。棧存取速度快,生存周期和數(shù)據(jù)大小確定,堆動態(tài)分配,無確定生存周期,java垃圾收集器自動收走不再使用的數(shù)據(jù),存取速度慢,因為要再運行時動態(tài)分配。
new運算符和構(gòu)造方法進行運算時要做兩件事:
為對象中的變量分配內(nèi)存
分配內(nèi)存后,new 運算符將計算一個引用的值,即獲得成員變量的內(nèi)存位置以及相關(guān)的信息,確保對象可以操作這些變量
對象的使用:
對象.變量/方法 :調(diào)用屬性和方法
一個類聲明的兩個對象若有相同的引用,二者就擁有完全相同的變量,但一個類創(chuàng)建兩個對象后二者引用不同。若object1、object2屬于同一個類,當(dāng)object1=object2;object1和object2的引用完全相同。
垃圾收集機制:當(dāng)發(fā)生object1=object2;時,系統(tǒng)會默認回收object1的變量,此時object1和object2再系統(tǒng)看來是一個名字一個變量。
類與程序基本結(jié)構(gòu):
一個java應(yīng)用程序由若干個類構(gòu)成,可以在一個源文件,也可以在多個源文件中。
java應(yīng)用程序有一個主類(含main方法的類)java程序從main方法開始執(zhí)行。
只編譯主類的源文件時,java系統(tǒng)會自動地先編譯主類需要的其他源文件。提倡一個java源文件只編寫一個類。
javac *.java表示編譯該目錄下全部java源文件。
4、參數(shù)傳值
**傳值機制:**參數(shù)屬于局部變量,方法中的參數(shù)變量的值是調(diào)用者指定的值的拷貝,方法改變參數(shù)的值,不會影響向其傳值變量的值。
**基本數(shù)據(jù)類型參數(shù)的傳值:**對于基本數(shù)據(jù)類型的參數(shù),向該參數(shù)傳值的級別不能高于該參數(shù)的級別。
**引用類型參數(shù)的傳值:**引用型數(shù)據(jù)(數(shù)組,對象,接口)的傳值,傳遞的是變量中存放的引用,而不是變量所引用的實體。(傳遞引用型變量會改變“原件”)
**可變參數(shù):**聲明方法時不給出某項開始直到最后一項參數(shù)的名字和個數(shù),但這些參數(shù)的類型必須相同:
void f(int … x):x是可變中的參數(shù)代表,參數(shù)代表必須是參數(shù)列表的最后一個。
5、對象的組合
類中包含某個對象,創(chuàng)建該類的對象時,該對象就會有其它對象
黑盒復(fù)用”:如果a組合了對象b,則a可以委托b調(diào)用b的方法,對象和所包含的對象屬于弱耦合關(guān)系(可以隨時更換組合)
對于同一個類的兩個對象,如果二者有同樣的引用,就會用同樣的實體,因此改變其中一個對象的實體,就會導(dǎo)致另一個對象的實體發(fā)生同樣的變化。
6、實例成員與類成員
變量
成員變量分為實例變量(無static的成員變量)和類變量(static修飾)。
不同對象的實例變量不同,所有類共享類變量,通過類名可直接訪問類變量。
類變量在類加載到內(nèi)存時就分配了相應(yīng)的內(nèi)存空間,該類創(chuàng)建對象時,不同對象的實例變量分配的內(nèi)存不同,但類變量共用。
方法
類中的方法也分為實例方法和類方法,區(qū)別是有無static修飾。類方法有static修飾,也稱為靜態(tài)方法。
當(dāng)類的字節(jié)碼文件加載到內(nèi)存時,未創(chuàng)建對象時類的實例方法不會分配入口地址,但類方法就已經(jīng)分配了入口地址。對于static方法,不必創(chuàng)建對象就可以用類名直接調(diào)用它。
7、方法的重載?
this出現(xiàn)在類的構(gòu)造方法中,代表使用該構(gòu)造方法所創(chuàng)建的對象。實例方法只能通過對象來調(diào)用,當(dāng)this關(guān)鍵字出現(xiàn)在實例方法中時,this就代表正在調(diào)用該方法的當(dāng)前對象。
當(dāng)實例變量在實例方法中出現(xiàn)時,默認格式:this.成員變量;當(dāng)static成員變量在實例方法中出現(xiàn)時,默認格式:類名.成員變量;通常可以省略.前面的this或者類名。但是當(dāng)實例成員變量和局部變量的名字相同時,就需要加this或者類名。
9、包
包名的目的是區(qū)分名字相同的類。package sum.com
有源文件保存在C:\1000\tom\jiafei中
我們要到包(jiafei)的上一層目錄(可以理解為包的文件夾的上一層,1000)去進行文件的編譯和運行,java語言不允許使用java作為包名的第一部分。
C:\1000> javac tom\jiafei\源文件
C:\1000> java tom.jiafei.主類名
10、import語句
import java.util.*; //表示引用util包中的所有類
//java.lang包是java語言的核心庫類,它包含運行java程序必不可少的系統(tǒng)類,系統(tǒng)自動引入lang包(含System、Math類)
//引入整個包只會增加編譯時間,不會影響性能,因為只有被使用到的類才會編譯成字節(jié)碼文件加載到內(nèi)存中
11、訪問權(quán)限
public、protected、友好的、private ——從高到低的權(quán)限等級
public:修飾的變量或方法稱為共有變量或共有方法。可以在另外一個類中通過類名來調(diào)用共有變量或共有方法。
protected:修飾的變量或方法稱為受保護變量或受保護方法。同一個包中的類可以通過另一類名調(diào)用其受保護的方法或變量
private:修飾的變量或方法稱為私有變量或私有方法,一個類中的私有變量不能再另外一個類中通過類名來操作這個私有變量或私有方法,提倡將變量設(shè)置為私有,通過方法來調(diào)用。
無修飾符:友好變量或者友好方法,在同一個包中可以通過類名在另外一個類中調(diào)用友好方法或者友好變量,若通過導(dǎo)入調(diào)用的類的對象,該對象不能調(diào)用自己的友好變量和友好方法。
public與友好類:另一個類中使用友好類創(chuàng)建對象時要保證它們在同一個包中,不能用protected和private修飾類。
12、JRE與JAR文件將類打包成jar文件放入擴展(jre\lib\ext)中,可以用jar.exe命令,將類的字節(jié)碼文件壓縮為一個jar文件。
三、題庫考查知識點整理
1、Java應(yīng)用程序由若干個類所構(gòu)成,這些類可以在一個源文件中,也可以分布在若干個源文件中,其中必須有一個源文件含有主類。
2、局部變量沒有默認值。
3、Hello無法通過編譯,因為其中的hello方法的方法頭是錯誤的(沒有類型)。成員方法的方法頭不能沒有類型
4、不能用protected和private修飾類
5、類體中成員變量的聲明和方法的定義可以交叉進行。
6、成員變量在整個類內(nèi)都有效,其有效性與它在類體中書寫的先后位置無關(guān)。
7、用new運算符和構(gòu)造方法創(chuàng)建對象的正確步驟:
1.為成員變量分配內(nèi)存,并指定默認值。
2.初始化成員變量,即用戶聲明成員變量時給定的默認值。
3.執(zhí)行構(gòu)造方法。
4.計算出一個引用值。
8、構(gòu)造方法沒有類型:含有類型的方法不是構(gòu)造方法。
9、方法中聲明的局部變量不可以用static修飾。
10、類中的類方法(static方法)只能操作類變量(static變量),不可以操作實例變量,但實例方法可以操作類變量。
11、如果在類中顯示地定義了構(gòu)造方法,Java編譯器將不再提供默認的構(gòu)造方法。
12、編譯器不提示程序使用了空對象(讓一個空對象去調(diào)用實例方法),但程序在運行時會出現(xiàn)NullPointerException異常。
13、類中的類變量(static)在該類被加載到內(nèi)存時(即使該類未創(chuàng)建對象)就會被分配內(nèi)存空間。
14、當(dāng)this關(guān)鍵字出現(xiàn)在實例方法中時,就代表正在調(diào)用該方法的當(dāng)前對象。
15、一個類聲明的兩個對象如果具有相同的引用,二者就具有完全相同的變量(實體)。
16、用戶定義構(gòu)造方法的訪問權(quán)限可以是public,protected,private或友好的。
17、當(dāng)方法被調(diào)用時,參數(shù)被分配內(nèi)存空間,調(diào)用者向參數(shù)傳遞值,即方法被調(diào)用時,參數(shù)變量必須有具體的值。
18、類所聲明的變量被稱為對象,對象(變量)負責(zé)存放引用,以確保對象可以操作分配給該對象的變量以及調(diào)用類中的方法。分配給對象的變量被習(xí)慣地稱做對象的實體。用該方法的當(dāng)前對象。
15、一個類聲明的兩個對象如果具有相同的引用,二者就具有完全相同的變量(實體)。
16、用戶定義構(gòu)造方法的訪問權(quán)限可以是public,protected,private或友好的。
17、當(dāng)方法被調(diào)用時,參數(shù)被分配內(nèi)存空間,調(diào)用者向參數(shù)傳遞值,即方法被調(diào)用時,參數(shù)變量必須有具體的值。
18、類所聲明的變量被稱為對象,對象(變量)負責(zé)存放引用,以確保對象可以操作分配給該對象的變量以及調(diào)用類中的方法。分配給對象的變量被習(xí)慣地稱做對象的實體。
19、this不可以出現(xiàn)在類方法(static方法)中。
20、只有初始化后的變量才能參與運算。