最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

基于《java2實用教程》的java知識點復習整理【第五章——第十章】

2023-05-24 09:13 作者:歡喜y1  | 我要投稿

第五章——子類與繼承


二、知識點詳解

1、子類的繼承性

class 子類名 extends 父類名{}

子類的成員中有一部分是自己定義的,有一部分是從父類繼承的。

若子類與父類在一個包中,則子類自然地繼承父類非private的成員變量或方法。

若子類與父類不再同一個包中,父類的private和友好訪問權限的變量不會被子類繼承,子類只能繼承父類protected和public訪問權限的成員變量作為子類的成員變量。

2、子類的對象

boolean isInstanceof = 中國人 instanceof 人類;//當instanceof左面的操作元是右面的類或者右面的子類創(chuàng)建的對象時,返回true

當用子類創(chuàng)建一個對象時,不僅子類中聲明的成員變量被分配了內(nèi)存,而且父類中的成員變量也都分配了內(nèi)存空間。但只有被繼承的那部分變量分配給了子類。


3、成員變量的隱藏和方法的重寫

變量隱藏:

當子類所聲明的成員變量的名字與父類成員變量的名字相同時,子類會隱藏所繼承的成員變量。子類自己定義的方法操作同名成員變量,該成員變量是重新聲明的變量。子類調用父類繼承的方法中調用的同名成員變量是隱藏的從父類繼承的成員變量。

方法重寫:

規(guī)則:子類定義一個方法,該方法的類型與父類方法的類型一致,并且這個方法的名字、參數(shù)個數(shù)、參數(shù)類型和父類的方法完全相同,該方法就叫子類重寫的方法。重寫父類的方法時不能降低方法的訪問權限(public>protected>友好的>private)。

4、super關鍵字

用super操作被隱藏的成員變量和方法

通過super.成員變量或方法可以調用被隱藏的父類成員變量或方法。

使用super調用父類的構造方法

當用子類的構造方法創(chuàng)建一個子類的對象時,子類的構造方法總是先調用父類的構造方法。由于子類不繼承父類的構造方法,因此子類在其構造方法中需要使用super來調用其父類的構造方法。當子類沒有明顯寫出super調用父類的某個構造方法時,會默認在子類構造方法中加入super();所有當父類有多個構造器時,應當含有一個無參構造器,避免子類省略super();時產(chǎn)生調用錯誤。

5、final關鍵字

final修飾的成員變量或局部變量為常量不能被修改,如果父類的方法被final修飾,則不允許被子類重寫,只能繼承(如同不能壞了老祖宗傳下來的規(guī)矩)。如果類被final修飾,則該類不能被繼承。

6、對象的上轉型對象

父類聲明,子類創(chuàng)建的對象為上轉型對象。例如People xiaoming = new Chinese(),對象的上轉型對象的實體由子類創(chuàng)建,但是該對象會失去原對象的部分屬性與功能,相當于子類對象進行了簡化。即小明是人類,簡化省去了小明是中國人的特征。

所以上轉型對象不能操作子類新增的成員變量,即誰聲明聽誰的話。上轉型對象可以訪問子類繼承或隱藏的成員變量,也可以調用子類繼承的方法或子類重寫的實例方法,即簡化了全新的,保留了改進的。

不能給父類創(chuàng)建的對象賦值給子類聲明的對象,即父親不能聽兒子的??梢詫ο蟮纳限D型對象強制轉換到一個子類對象,就恢復原來的屬性和方法。如果子類重寫了父類的靜態(tài)方法,那子類對象的上轉型對象不能調用子類重寫的靜態(tài)方法,只能調用父類的靜態(tài)方法。

7、繼承和多態(tài)

多態(tài)性:父類的某個方法被子類重寫時,可以產(chǎn)生自己的功能和行為。

8、abstract類和abstract方法

抽象類:用abstract修飾的類

抽象方法:用abstract修飾的方法

抽象方法只能聲明,不能有方法體。且不允許使用final和abstract同時修飾一個方法或類。不允許用static修飾abstract方法。

抽象類中可以有抽象方法,抽象類只能被繼承不能創(chuàng)建對象。繼承抽象類的子類必須重寫父類的抽象方法(去掉abstract修飾),而final方法不能被繼承,所以抽象類中的抽象方法不能被final修飾。如果抽象類繼承抽象類則可以繼承父類的抽象方法,也可以重寫父類的abstract方法。

抽象類雖然不能創(chuàng)建對象(new),但可以聲明對象。作為上轉型對象。

9、開閉原則

對擴展開發(fā),對修改關閉

三、題庫考查知識點整理

1、子類繼承的方法只能操作子類繼承和隱藏的成員變量。

2、不可以同時用final和abstract修飾同一個方法。

3、不允許使用static修飾abstract方法。

4、所謂子類繼承父類的成員變量作為自己的一個成員變量,就好象它們是在子類中直接聲明一樣,可以被子類中自己定義的任何實例方法操作。

5、如果在子類中想使用被子類隱藏的成員變量或方法就需要使用關鍵字super。

6、子類不繼承父類的構造方法。

7、 如果在子類的構造方法中,沒有顯示地寫出super關鍵字來調用父類的某個構造方法,那么編譯器默認地有:super();調用父類的無參數(shù)的構造方法(如果父類沒有這樣的構造方法,代碼將出現(xiàn)編譯錯誤).

8、在子類的構造方法中顯示地寫出super時,super關鍵字形成的語句必須是子類構造方法的第1條語句。

9、如果一個類中有abstract方法,這個類必須是abstract類。

10、代碼無法通過編譯。(原因是,父類People已經(jīng)沒有了不帶參數(shù)的構造方法,而子類Student構造方法默認調用People類的不帶參數(shù)的構造方法)。

11、子類重寫父類的方法時,不允許降低方法的訪問權限,但可以提高訪問權限。

12、如果子類是abstract類,允許子類將父類的非abstract方法重寫為abstract方法。

13、如果一個非抽象類是某個抽象類的子類,那么它必須重寫父類的抽象方法,即給出方法體(將abstract方法重寫為非abstract方法)。

14、abstract子類也要繼承abstrat父類的abstract方法 。

15、類中的類方法(static方法)只能操作類變量(static變量),不可以操作實例變量。

16、編譯器不提示程序使用了空對象(讓一個空對象去調用實例方法),但程序在運行時會出現(xiàn)NullPointerException異常。

17、子類對象的上轉型對象操作子類繼承的方法或子類重寫的實例方法,其作用等價于子類對象去調用這些方法。

18、super關鍵字形成的語句不一定是子類構造方法中的第1條語句。顯示的寫出才作為第一句。不寫則無。

19、abstract類可以沒有abstract方法。

20、abstract方法的abstract關鍵字,必須放在方法的類型的前面,不可以插在方法類型和方法名字之間。

21、子類重寫或新增的方法也能直接操作被子類隱藏的成員變量。

22、如果子類可以繼承父類的某個方法,那么子類就有權利重寫這個方法。

23、類所聲明的變量被稱為對象,對象(變量)負責存放引用,以確保對象可以操作分配給該對象的變量以及調用類中的方法。分配給對象的變量被習慣地稱做對象的實體。

24、寫的話,super關鍵字形成的語句必須是子類構造方法中的第1條語句。

25、子類聲明的成員的變量的名字和從父類繼承來的成員變量的名字相同,子類就會隱藏掉所繼承的成員變量。方法的修飾(如果有),例如public,abstract,必須放在方法的類型的前面,不可以插在方法類型和方法名字之間。

26、java.lang包中的Object類是所有其他類的祖先類。

類聲明的成員的變量的名字和從父類繼承來的成員變量的名字相同,子類就會隱藏掉所繼承的成員變量。方法的修飾(如果有),例如public,abstract,必須放在方法的類型的前面,不可以插在方法類型和方法名字之間。

26、java.lang包中的Object類是所有其他類的祖先類。

第六章——java接口與實現(xiàn)

一、知識結構框架

二、知識點詳解

1、接口

定義方式:使用interface定義接口,接口的定義與類的定義相似,class改為interface作為接口的聲明。

  • 聲明:interface

  • 接口體:沒有變量和普通的方法,只有常量和抽象方法(方法默認被public abstract修飾)。

2、實現(xiàn)接口

**類實現(xiàn)接口:**與繼承類似,使用implements聲明該類實現(xiàn)一個或多個接口。

**重寫接口的方法:**若一個非抽象類實現(xiàn)了某個接口,則這個類必須重寫這個接口中的所有方法。重寫時要去除abstract修飾符,給出方法體,使用public修飾(不能降低權限)。

**注意:**程序可以用接口名訪問接口的常量,如果一個類實現(xiàn)了接口,那么該類可以直接在類體中使用該接口的常量。如果一個類聲明實現(xiàn)了一個接口,若其為抽象類,則可以不重寫借口的方法。即抽象類可以重寫也可以直接擁有接口的方法。

**接口修飾:**如果interface前加public關鍵字修飾,則該接口稱為public接口,可以被任何一個類實現(xiàn)。若無public,則稱為友好接口,友好接口可以被與該接口同一個包中的類實現(xiàn)。

若父類實現(xiàn)了某個接口,則子類自然實現(xiàn)該接口,不用再次聲明,接口可以被接口使用extends繼承,子接口將繼承父類接口中的全部方法和常量。

3、接口回調

接口屬于引用型變量,接口變量可以存放實現(xiàn)該接口的類的實例的應用,即可以存放對象的引用。這句話的意思是,接口與類相似屬于引用型變量,可以用接口名聲明創(chuàng)造一個接口變量,該接口變量存放著對象的引用。

**指針回調:**在C語言中表示變量的地址在某一時刻存放存放在一個指針變量中,通過指針變量間接操作該變量中存放的數(shù)據(jù)。該處“回調”借用此定義。

**定義:**接口回調指可以把實現(xiàn)某一接口的類創(chuàng)建的對象的引用賦值給該接口聲明的接口變量,則該接口變量可以調用被類實現(xiàn)的接口方法。實際上,當接口變量調用被類實現(xiàn)的接口方法時,就是通知相應的對象調用這個方法。

理解:將實現(xiàn)某個接口的類創(chuàng)建的對象,賦值給該接口聲明的變量。這個變量就可以調用被類實現(xiàn)的接口方法,將此調用稱為接口的回調。

4、接口與多態(tài)

不同的類在實現(xiàn)同一個接口時可能具有不同的實現(xiàn)方式,則接口回調時可能具有多種形態(tài)。

體現(xiàn)在:實現(xiàn)接口重寫方法的多樣性,從而導致接口回調的多樣性。

5、接口參數(shù)

如果一個方法的參數(shù)是接口類型,我們就可以將任何實現(xiàn)該接口的類的實例的引用傳遞給該接口參數(shù),那么接口參數(shù)就可以回調類實現(xiàn)的接口方法。

6、abstract類與implements接口的比較

  • abstract類和接口都可以有abstract方法,但是抽象類也可以有非abstract方法,而接口只能有abstract方法

  • abstract類中可以有常量也可以存在變量,但是抽象類中只能有常量,不能存在變量

三、題庫考查知識點整理

1、在接口中,編譯器認為int MAX = 100;就是 public static final int MAX = 100;

2、在接口中,protected void start();會導致編譯出錯。

3、接口中會默認給方法添加public abstract修飾詞,默認給變量添加public static final修飾詞。

4、類聲明class Stu extends People implements Com 意思是Stu類是People類的子類,父類People實現(xiàn)Com接口。

5、一個接口可以繼承多個接口。

6、一個類聲明實現(xiàn)一個接口,但沒有重寫接口中的所有方法,那么這個類必須是抽象類。

7、接口中的常量不可以不指定初值,因為編譯器不會提供默認值。所以在接口中,int MAX;會導致編譯出錯。

8、如果一個非abstract類實現(xiàn)某個接口,該類必須重寫接口中的全部abstract方法??梢杂媒涌诿苯釉L問接口中的常量。能用abstract修飾接口。

9、一個類聲明實現(xiàn)一個接口,但沒有重寫接口中的所有方法,那么這個類必須是抽象類。子接口將繼承父接口中的全部方法和常量。接口變量中可以存放實現(xiàn)該接口的類的實例的引用(對象的引用)。

10、把實現(xiàn)某一接口的類創(chuàng)建的對象的引用賦值給該接口變量,那么該接口變量就可以調用被類實現(xiàn)的接口方法。接口中的常量必須指定初值。

11、任何一個類都可以實現(xiàn)public接口。如果一個類和友好接口在同一個包里,就允許它實現(xiàn)該接口。

第七章——內(nèi)部類與異常類

類除成員變量和方法的第三個成員

一、知識結構框架

二、知識點詳解

1、內(nèi)部類

**內(nèi)部類:**一個類中定義一個類

**外嵌類:**包含內(nèi)部類的類稱為內(nèi)部類的外嵌類

關系:

內(nèi)部類的外嵌類的成員變量在內(nèi)部類中仍然有效,內(nèi)部類中的方法也可以調用外嵌類的方法

內(nèi)部類的類體中不可以聲明類變量和類方法(static),但是內(nèi)部類可以被修飾為static內(nèi)部類,外嵌類的類體可以用內(nèi)部類聲明對象作為外嵌類的成員

內(nèi)部類僅供其外嵌類使用 ,其他類不可以用某個類的內(nèi)部類聲明對象

內(nèi)部類的字節(jié)碼文件名:外嵌類名$內(nèi)部類名

static內(nèi)部類是外嵌類中的一種靜態(tài)數(shù)據(jù)類型,程序可以在其它類中使用static內(nèi)部類來創(chuàng)建對象。但static內(nèi)部類不能用來操作外嵌類中的實例成員變量。

2、匿名類

和子類有關的匿名類:

直接使用一個類的子類的類體創(chuàng)建一個子類對象。即創(chuàng)建子類對象時,除了使用父類的構造方法外還有類體,此類體被認為是一個子類去掉聲明后的類體稱為匿名類。

//new 類名(){類體};一般new 類名()為創(chuàng)建對象,但此處是省略了父類的聲明直接創(chuàng)建了一個子類

new 類名(){

? 匿名類的類體??

};

匿名類特點:匿名類可以繼承父類的方法也可以重寫父類的方法

使用匿名類時,必然是在某個類中直接用匿名類創(chuàng)建對象,因此匿名類一定是內(nèi)部類

匿名類可以訪問外嵌類中的成員變量和方法,匿名類的類體中不可以聲明static變量和static方法

由于匿名類是一個子類,沒有類名,所以在用匿名類創(chuàng)建對象時,要直接使用父類的構造方法

和接口有關的匿名類:java允許直接使用接口名和一個類體創(chuàng)建一個匿名對象,該類體被認為是實現(xiàn)接口的類去掉聲明后的類體。

//該處new 接口名():實際是創(chuàng)建一個實現(xiàn)該接口的類去掉聲明后保留類體

new 接口名(){

? 匿名類的類體??

};

3、異常類

try-catch語句

try{

}

catch(Except e){

}

自定義異常類

自己書寫一個子類繼承父類Exception,即為異常類的擴展

throws:在方法名后書寫,后接一個異常類名

throw:后接該異常的對象,如果異常發(fā)生,將拋出異常,導致方法結束

斷言

斷言語句用于調試代碼階段。在調試代碼階段讓斷言語句發(fā)揮作用,這樣就可以發(fā)現(xiàn)一些致命的錯誤,當程序正式運行時就可以關閉斷言語句,但仍把斷言語句保留在源代碼中,如果以后應用程又需要調試,可以重新啟用斷言語句。

assert booleanExpression;

assert booleanExpression:messageException;


三、題庫考查知識點整理

1、E$1.class是匿名類的字節(jié)碼(編譯器編譯器給該匿名類的名字是E$1)。

2、和類有關的匿名類一定是該類的一個非抽象子類。

3、內(nèi)部類的類體中不可以聲明類變量(static)變量。

4、非匿名內(nèi)部類可以實現(xiàn)接口。

5、內(nèi)部類可以是final類。

6、一個方法在聲明時不可以使用throw關鍵字聲明要產(chǎn)生的若干個異常。

7、接口匿名類(和接口有關的匿名類)不可以是抽象類。

8、匿名類有構造方法。

9、內(nèi)部類的外嵌類的成員變量在內(nèi)部類中仍然有效。內(nèi)部類中的方法也可以調用外嵌類中的方法。外嵌類的類體中可以用內(nèi)部類聲明對象,作為外嵌類的成員。

10、可以用private或protected修飾內(nèi)部類。內(nèi)部類僅供它的外嵌類使用,其他類不可以用某個類的內(nèi)部類聲明對象。static內(nèi)部類不能操作外嵌類中的實例成員變量。

11、非匿名內(nèi)部類也可以有(內(nèi)部)子類。不可能用匿名類聲明對象,但卻可以直接用匿名類創(chuàng)建一個對象。匿名子類(和子類有關的匿名類)可以繼承父類的方法也可以重寫父類的方法。

12、匿名子類(和子類有關的匿名類)的類體中不可以聲明static成員變量和static方法。接口匿名類(和接口有關的匿名類)的類體中不可以聲明static成員變量和static方法。匿名類一定是內(nèi)部類。

13、try~catch語句可以由幾個catch組成,分別處理發(fā)生的相應異常。一個方法在聲明時可以使用throws關鍵字聲明要產(chǎn)生的若干個異常。throw的作用就是拋出異常.throw和throws是兩個不同的關鍵字。

14、匿名子類(子類有關的匿名類)一定是final類。匿名子類(子類有關的匿名類)一定不是抽象類。接口匿名類(和接口有關的匿名類)一定是final類。

15、匿名類只一個不帶參數(shù)的構造方法(編譯器會給匿名類一個名字和構造方法)。匿名類一定是final類。匿名類一定是內(nèi)部類。


16、匿名類沒有構造方法。匿名子類(和子類有關的匿名類)的類體中可以定義static方法。

抽象類。接口匿名類(和接口有關的匿名類)一定是final類。

17、一個方法在聲明時可以使用throws關鍵字聲明要產(chǎn)生的若干個異常。匿名類一定是final類。

第八章——常用實用類

一、知識結構框架


二、知識點詳解

(一)關于字符串

String類

java將String類定義為final類,所以該類無子類

1、常量對象

String常量也是對象,即字符串是String常量,被放入常量池中,受常量池的保護其中的數(shù)據(jù)在程序運行期間不允許被改變。

2、String對象

String s = new String("別罵了別罵了");

String t = new String("別罵了別罵了");

凡new運算符構造的對象都不再常量池中,所以s和t雖然實體相同,但是引用不同。

用戶無法輸出String對象的引用,輸出的是該對象的實體,即字符串

構造方法:

  • String(char a[])

  • String s = new String("別罵了");

//等同于

char a[] - {'別','罵','了'};

String s = new String(a);

  • String(char a[],int startIndex,int count)

從字符數(shù)組中的索引startIndex開始取count個字符


3、引用String常量

String常量是對象,因此可以把String常量的引用賦值給一個String對象

String a,b;

a = "java";

b = "java";

//此處a和b具有相同的引用,則具有相同的實體

a==b;//此處為true

4、字符串的并置

String a,b,c;

a = "ja";

b = "va";

c=a+b;//此處c為"java"

5、String類的常用方法

int length();

boolean equals(String s);//判斷是否與s相等

boolean startsWith(String s);//判斷是夠以s開始

int comparaTo(String s);//比較字符序列的大小,返回差值

boolean contains(String s);//是否包含s

int indexOf(String s);//找到該字符串第一次出現(xiàn)的位置(未找到返回-1)

int lastIndexOf(String s);//找到該字符串最后一次出現(xiàn)的位置(未找到返回-1)

int indexOf(String s,int startpoint);//從startpoint開始找,找到該字符串第一次出現(xiàn)的位置(未找到返回-1)

String substring(int start,int end);//獲得新的String對象,從start到end。end不寫表示復制到末尾

String trim();//取掉前后空格得到新的String對象

6、對象的字符串表示

即重寫toString方法,也可以用super.toString調用object的toString方法。

7、字符串、字符數(shù)組、字節(jié)數(shù)組

字符串與字符數(shù)組

String s;char[] a,c;s.getChars(11,15,a,0);//將s從11到15的字符復制給ac = s.toCharArray();//將s所有實體轉換為字符數(shù)組存入c

字符串與字節(jié)數(shù)組

String s;byte[] a;a = s.getBytes();//將s中的實體存入字節(jié)數(shù)組a中String c = new String(a,6,2);//將字節(jié)數(shù)組中的第6位開始取兩位,返回新的字符串(英文占1個字

字符串的加密算法

//加密

String encrypt(String sourceString,String password){

? ? char[] p = password.toCharArray();

? ? int n = p.length;

? ? char[] c = sourceString.toCharArray();

? ? int m = c.length;

? ? for(int k=0;k<m;k++){

? ? ? ? int mima = c[k] + p[k%n];

? ? ? ? c[k] = (char)mima;

? ? }

? ? return new String(c);

}

8、正則表達式以及字符串的替換與分解

正則表達式

特殊意義的字符:正則表達式中的元字符

[xxx]:該元字符代表方括號里的任何一個字符

[abc]:代表abc中的任何一個;

[^abc]:代表除了abc以外的任何字符;

[a-zA-Z]:代表英文字母的任何一個;

[a-d]:代表a~d的任何一個;

[[]]:并【或】;

[&&[]]:交【且】;

[&&[^]]:差;

  • 限定修飾符用法



字符串替換

String str = "12hello567bird".replaceAll("[a-zA-Z]+","你好");//結果為:12你好567你好//repaceAll()返回新的,不改變原件

字符串分解

String regex = "\\D+";//表示匹配任何非數(shù)字字符序列String difitWord[] = str.split(regex);//將非數(shù)字字符作為分隔符標記分解出str的字符序

StringTokenizer類

不適用正則表達式分解String對象的字符串

StringTokenizer fenxi = new StringTokenizer("you are welcome");//使用默認分割標記

StringTokenizer fenxi = new StringTokenizer("you*#are*#welcome","*#");//使用自定義分割標記

while(fenxi.hasMoreTokens()){

? ? System.out.print(fenxi.nextToken);

}

Scanner類

String xxx = "電費78水費88煤氣費99";

Scanner scanner = new Scanner(xxx);//創(chuàng)建一個Scanner對象

scanner.useDelimiter("[^0123456789.]+");//設置分隔符

int sum;

while(scanner.hasNext){//判斷是否有下一個

? ? sum += sannner.nextInt;

}



Scanner scanner = new Scanner(System.in);

? ? ? ? char key = ' ';

? ? ? ? boolean loop = true;

? ? ? ? while (loop){

? ? ? ? ? key = scanner.next().charAt(0);//接收一個字符

? ? ? ? ? case 'a':

? ? ? ? ? ? ? ?System.out.println("輸入一個數(shù):");

? ? ? ? ? ? ? ?nt value = scanner.nextInt();

? ? ? ? ? ? ? ?break;

? ? ? ? ? case 'e':

? ? ? ? ? ? ? ?scanner.close();

? ? ? ? ? ? ? ?loop = false;

? ? ? ? ? ? ? ?System.out.println("程序退出");

? ? ? ? ? ? ? ?break;

? ? ? ?}

StringBuffer類

可自動調解大小的字符序列

三個構造方法:

StringBuffer();//初始容量大小為16個字符StringBuffer(int size);//指定給該對象設定初始容量的大小StringBuffer(String s);//在s的容量基礎上再加16//當容量不夠時,該對象的容量會自動增加

方法:

StringBuffer s = new StringBuffer();

s.append(String str);//添加str

s.charAt(int n);//得到序列索引為n的字符

s.setCharAt(int n,char ch);//將n處的字符替換為ch

s.insert(int index,String str);//將參數(shù)str指定的字符序列插入到參數(shù)index指定的位置

s.reverse();//翻轉字符序列

s.delete(int startIndex,int endIndex);//從當前字符序列中刪除一個子字符序列(從start到end),并返回當前對象的引用

s.replace(int startIndex,int endIndex,String str);//將從start到end的序列換成str


(二)關于時間與日期

Date類

//時間顯示

Date nowTime = new Date();

System.out.println(nowTime);

//格式化顯示

Date date = new Date();

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

System.out.println(date);


Calendar類

Calendar calendar = Calendar.getInstance();//初始化一個日歷對象

calendar.get(Calendar.Month);//返回月份的整數(shù)

calendar.get(Calendar.DAY_OF_WEEK);//返回星期幾的整數(shù)

calendar.getTimeInMillis();//返回毫秒計時

三)關于數(shù)學

Math類

public static long abs(double a);? //返回a的絕對值。

public static double max(double a,double b); //返回a、b的最大值。

public static double min(double a,double b); //返回a、b的最小值。

public static double random();? //產(chǎn)生一個0到1之間的隨機數(shù)(不包括0和1)。

public static double pow(double a,double b); //返回a的b次冪。

public static double sqrt(double a); //返回a的平方根。

public static double log(double a);? //返回a的對數(shù)。

public static double sin(double a); //返回正弦值。

public static double asin(double a);? //返回反正弦值。

BigInteger類

public BigInteger add(BigInteger val);? //返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的和。

public BigInteger subtract(BigInteger val);//返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的差。

public BigInteger multiply(BigInteger val);//返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的積。

public BigInteger divide(BigInteger val);//返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的商。

public BigInteger remainder(BigInteger val);//返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的余。

public int compareTo(BigInteger val); //返回當前大整數(shù)對象與參數(shù)指定的大整數(shù)的比較結果,返回值是1、-1或0,分別表示當前大整數(shù)對象大于、小于或等于參數(shù)指定的大整數(shù)。

public BigInteger pow(int a);? //返回當前大整數(shù)對象的a次冪。

public String toString();? //返回當前大整數(shù)對象十進制的字符串表示。

public String toString(int p);? //返回當前大整數(shù)對象p進制的字符串表示。

Random類

//構造方法:

public Random();

public Random(long seed);//使用參數(shù)seek指定的種子創(chuàng)建一個Random對象

//隨機數(shù)生成器random調用不帶參數(shù)的nextInt()方法:

? ? ? ?Random random=new Random();

? ? ? ? ? ? ?random.nextInt();

//返回一個0至n之間(包括0,但不包括n)的隨機數(shù) 隨機數(shù)生成器random調用帶參數(shù)的nextInt(int m)方法(參數(shù)m必須取正整數(shù)值)例如:

random.nextInt(100);//返回一個0至100之間的隨機整數(shù)(包括0,但不包括100)。

//隨機得到true和false兩個表示真和假的boolean值,隨機數(shù)生成器random調用nextBoolean()方法,例如:

random.nextBoolean();//返回一個隨機boolean值。

數(shù)字格式化

格式化模式

format方法中的“格式化模式”是一個用雙引號括起的字符序列(字符串),該字符序列中的字符由格式符和普通字符所構成。

例如:"輸出結果%d,%f,%d"中的%d和%f是格式符號 .

format方法返回的字符串就是“格式化模式”中的格式符被替換為它得到的格式化結果后的字符串。

例如:String s = String.format(“%.2f”,3.141592);那么s就是“3.14”.

值列表

format方法中的“值列表”是用逗號分隔的變量、常量或表達式。 例如:

String s=format("%d元%0.3f公斤%d臺",888,999.777666,123); 那么,s就是"888元999.778公斤123臺"。

格式化順序

format方法默認按從左到右的順序使用“格式化模式”中的格式符來格式化“值列表”中對應的值,而“格式化模式”中的普通字符保留原樣。

例如,假設int型變量x和double型變量y的值分別是888和3.1415926,

那么對于String s = format(“從左向右:%d,%.3f,%d”,x,y,100);

字符串s就是:從左向右:888,3.142,100

格式化整數(shù)

格式符

%d:格式化為十進制

%o:格式化為八進制

%x:格式化為小寫的十六進制整數(shù)

%X:格式化為大寫的十六進制整數(shù)

修飾符

+:強制添加上+號

,:按千分組

數(shù)據(jù)的寬度

%8d:寬度為8,右對齊

%-8d:寬度為8,左對齊

%08d:寬度為8,右對齊,0來填充

格式化浮點數(shù)

格式符

%f:將值格式化為十進制浮點數(shù),小數(shù)保留6位

%e:將值格式化位科學計數(shù)法的十進制浮點數(shù)

修飾符

+:格式化正數(shù)時,強制加上+

,:整數(shù)部分按千分組

限制小數(shù)位數(shù)與數(shù)據(jù)的寬度

%.nf:限制小數(shù)的位數(shù)

如:%.3f:保留三位小數(shù)

%nf:數(shù)據(jù)的寬度n,右對齊,空格填充

%-nf:數(shù)據(jù)寬度為n,左對齊,空格填充

%0nf:0填充,寬度為n,右對齊

三、題庫考查知識點整理

單選:

1、String 類是final 類,不可以有子類。

2、int m =Short.parseShort(“567”);

3、程序標注的【代碼】的輸出結果是bird。

4、程序標注的【代碼】的輸出結果是你好。

5、無編譯錯誤,在命令行執(zhí)行程序:“java E I love this game”,程序輸出this。

6、無編譯錯誤,在命令行執(zhí)行程序:“java E go on”,運行異常:ArrayIndexOutOfBoundsException: 2。

7、“9dog”.matches("\ddog")的值是true。12hello567 .replaceAll( [123456789]+ , @ )返回的字符串是@hello@。"\hello\n"是正確的字符串常量。

8、"\tea"是正確的字符串常量。"'hello"是正確的字符串常量。"\natural"是正確的字符串常量。

9、表達式"java".equals(“java”)的值是true。表達式"Bird".compareTo(“Bird fly”)的值是負數(shù)。表達式"I love you".contains(“you”)的值是true。

10、default966 .matches( [^bc]+[789]{1}[6]{2} )的值是true。表達式"RedBird".indexOf(“Bird”)的值是3。表達式"RedBird".indexOf(“Cat”)的值是-1。

11、Integer.parseInt(“12.9”);會觸發(fā)NumberFormatException異常。表達式"bird".contentEquals(“bird”)的值是true。表達式"Bird" == "bird"的值是false。

12、表達式 3.14 .matches( [0-9]+[.]{1}[0-9]+ )的值是true。表達式"220301200210250286".startsWith(“2203”)的值是true。表達式"220301200210250286".endsWith(“286”)的值是true。

13、程序標注的【代碼】的輸出結果是bird。

14、程序標注的【代碼】的輸出結果是:你好。

15、 String str2 = new String (a); //B錯誤代碼:不能存放數(shù)組

16、 int index = str.indexof(“BC”); //A錯誤代碼:O要大寫

17、 boolean boo= str.startWith(“Java”); //D錯誤代碼:startsWith

18、int m = “java”.compareto(“java”); //C錯誤代碼:To的T大寫

19、 String s = str.subString(0,3); //C錯誤代碼:subsString

20、 boolean bn = str.equal(""); //A錯誤代碼:equals

21、 int m = str.equals(""); //A錯誤代碼:boolean不能轉換為int

22、 int n = s.length ; //D錯誤代碼length()

多選:

1、String 類是final 類,不可以有子類。String 類在java.lang中

2、錯誤:String 類在java.util包中?!癮bc”=="abc"的值是false .“abc”.equals(“Abc”)的值是true

3、int m =Short.parseShort(“567”);

4、錯誤:int m =Float.parseFloat(“567”);byte m =Integer.parseInt(“2”);float m =Float.parseDouble(“2.9”);

5、“9dog”.matches("\ddog")的值是true。12hello567 .replaceAll( [123456789]+ , @ )返回的字符串是@hello@。"\hello\n"是正確的字符串常量。

6、錯誤:new Date(1000)對象含有的時間是公元后1000小時的時間

7、"\tea"是正確的字符串常量。"'hello"是正確的字符串常量。"\natural"是正確的字符串常量。

8、錯誤:"\hello"是正確的字符串常量。

9、default966 .matches( [^bc]+[789]{1}[6]{2} )的值是true。表達式"RedBird".indexOf(“Bird”)的值是3。表達式"RedBird".indexOf(“Cat”)的值是-1。

10、錯誤:表達式"RedBird".lastIndexOf(“Bird”)的值是4。

11、Integer.parseInt(“12.9”);會觸發(fā)NumberFormatException異常。表達式"bird".contentEquals(“bird”)的值是true。表達式"Bird" == "bird"的值是false。

12、錯誤:表達式"Bird".equals(“bird”)的值是true。

13、表達式 3.14 .matches( [0-9]+[.]{1}[0-9]+ )的值是true。表達式"220301200210250286".startsWith(“2203”)的值是true。表達式"220301200210250286".endsWith(“286”)的值是true。

14、錯誤:表達式"D:/java/book".lastIndexOf("/")的值是8。

15、String對象的字符序列是不可修改的。StringBuffer對象的字符序列是可修改的。表達式"\t\nABC".length()的值是5。random.nextInt(100);//返回一個0至100之間的隨機整數(shù)(包括0,但不包括100)。

16、錯誤:Random對象的nextInt(int n)方法隨機返回[0,n]之間的一個整數(shù)

17、表達式 java88_hello_99 .matches( [a-zA-Z|0-9|_]+ )的值是true.表達式 abcdef你好 .matches( [0-9.]+ )的值是true.

18、錯誤:表達式 hello*? .matches( [a-zA-Z|0-9|_]+ )的值是true。表達式 hello .matches( [0-9.]+ )的值是false.

第十章——輸入、輸出流

一、知識結構框架

二、知識點詳解

(一)File類

獲取文件本身的信息,不涉及對文件的讀寫操作

1、構造方法:

File(String filename);

File(String directoryPath,String filename);

File(File f, String filename);

2、常用方法:

public String getName() 獲取文件的名字。

public?boolean?canRead() 判斷文件是否是可讀的。

public boolean canWrite() 判斷文件是否可被寫入。

3、創(chuàng)建、運行與刪除

import java.io.File;

import java.io.IOException;


public class 文件的創(chuàng)建運行與刪除 {

? ? public static void main(String[] args) throws IOException {

? ? ? ? //創(chuàng)建與刪除

? ? ? ? File file1 = new File("bbb.txt");

? ? ? ? file1.createNewFile();

? ? ? ? file1.delete();

? ? ? ? //從idea運行微信

? ? ? ? File file2 = new File("C:\\Program Files (x86)\\Tencent\\WeChat","WeChat.exe");

? ? ? ? Runtime ec = Runtime.getRuntime();

? ? ? ? ec.exec(file2.getAbsolutePath());

? ? }

}

(二)文件字節(jié)輸入、輸出流

相關構造器與方法:

輸入流:FileInputStream(String name); FileInputStream(File file);

讀取方法:int read(); int read(byte b[]); int read(byte b[],int off,int len)

關閉流:close();

輸出流:FileOutoutStream(String name); FileOutoutStream(File file);

寫入方法:void weite(int n); void write(byte b[]); void write(byte b[],int off,int len)

關閉流:close();

1、輸入流

四個步驟:

(1)設定輸入流的源

(2)創(chuàng)建指向源的輸入流

(3)讓輸入流讀取源中的數(shù)據(jù)

(4)關閉輸入流。

例子

? ? ? ?try {

? ? ? ? ? ? //設定輸入流的源

? ? ? ? ? ? File user = new File("商業(yè)計劃書.txt");

? ? ? ? ? ? //指向源的輸入流

? ? ? ? ? ? FileInputStream in = new FileInputStream(user);

? ? ? ? ? ? //讓輸入流讀取源中的數(shù)據(jù)

? ? ? ? ? ? int t = in.read();

? ? ? ? ? ? System.out.println(t);

? ? ? ? ? ? //關閉流

? ? ? ? ? ? in.close();

? ? ? ? }catch (IOException e){

? ? ? ? ? ? e.printStackTrace();

? ? ? ? }

2、輸出流

四個步驟:

(1)給出輸出流的目的地

(2)創(chuàng)建指向目的地的輸出流

(3)讓輸出流把數(shù)據(jù)寫入到目的地

(4)關閉輸出流。

try {

? ? ? ? ? ? //創(chuàng)建指向目的地的輸出流

? ? ? ? ? ? FileOutputStream out = new FileOutputStream("商業(yè)計劃書.txt");

? ? ? ? ? ? //使用輸出流寫字節(jié)

? ? ? ? ? ? byte abc[] = "我拿青春陪你賭".getBytes();

? ? ? ? ? ? out.write(abc);

? ? ? ? ? ? //關閉流

? ? ? ? ? ? out.close();

? ? ? ? ? ? //向文末加入

? ? ? ? ? ? byte b[] = "\n最后你卻讓我輸".getBytes();

? ? ? ? ? ? FileOutputStream out2 = new FileOutputStream("商業(yè)計劃書.txt",true);

? ? ? ? ? ? out2.write(b,0,b.length);

? ? ? ? ? ? out2.close();

? ? ? ? }catch (Exception e){

? ? ? ? ? ? e.printStackTrace();

? ? ? ? }

(三)文件字符輸入、輸出流

相關構造器與方法:

輸入流:FileReader(String name); FileReader(File file);

讀取方法:int read(); int read(byte b[]); int read(byte b[],int off,int len)

關閉流:close();

輸出流:FileWriter(String name); FileWriter(File file); FileWriter(String name,boolean append); FileWriter(File file,boolean append);

寫入方法:void weite(int n); void write(byte b[]); void write(byte b[],int off,int len)

關閉流:close();

?File sourceFile = new File("商業(yè)計劃書.txt");

? ? ? ? File targetFile = new File("青春贊歌.txt");

? ? ? ? char c[] = new char[28];

? ? ? ? try {

? ? ? ? ? ? //分別創(chuàng)建輸入內(nèi)容的輸入流,和寫入內(nèi)容的輸出流

? ? ? ? ? ? Writer out = new FileWriter(targetFile,true);

? ? ? ? ? ? Reader in = new FileReader(sourceFile);

? ? ? ? ? ? //讀取并寫入輸入流的內(nèi)容到指定輸出流out

? ? ? ? ? ? int n = -1;

? ? ? ? ? ? while ((n = in.read(c))!=-1){

? ? ? ? ? ? ? ? out.write(c,0,n);

? ? ? ? ? ? }

? ? ? ? ? ? //資源關閉

? ? ? ? ? ? out.flush();

? ? ? ? ? ? out.close();

? ? ? ? }catch (IOException e){

? ? ? ? ? ? e.printStackTrace();

? ? ? ? }

(四)緩沖流

相關構造器與方法:

輸入流:BufferedReader(Reader in);

讀取方法:readLine(); 讀取文本行

相關方法:newLine(); 向文件寫入一個回行符

關閉流:close();

輸出流:BufferedWriter(Writer out);

寫入方法:write(String s,int off,int len); 把字符串s寫到文件中

關閉流:close();

(五)隨機流

相關構造器與方法:

**隨機流:**RandomAccessFile(File file,String mode);

讀寫方法:


(1)八種基本類型數(shù)據(jù)對應的讀/寫方法

boolean readBoolean() void writeBoolean(boolean b)

byte readByte() void writeByte(int n)

char readChar() void writeChar(int n)

short readShort() void writeShort(int n)

int readInt() void writeInt(int n)

long readLong() void writeLong(long l)

float readFloat() void writeDouble(double d)

double readDouble() void writeFloat(float f)

int read() void write(int n)

int readUnsignedByte() int readUnsignedShort()

(2)字節(jié)數(shù)組、字符串及其他方式的讀寫方式

int read(byte[] b) / void write(byte[] b) 讀/寫一個字節(jié)數(shù)組。

int read(byte[] b,int off,int len) / void write(byte[] b,int off,int len) 從數(shù)組的off位置開始,讀/寫len個字節(jié)。

String readUTF() / void writeUTF(String s) 以與機器無關的UTF-8編碼方式把str寫入文件。

String readLine() 從文本文件中讀入一行。

void writeChars(String s) 以字符方式寫入一個字符串。

void writeBytes(String s) 以字節(jié)方式寫入一個字符串。

相關方法:

(3)有關文件位置方法
long getFilePointer() 獲得文件的當前位置。
void seek(long pos) 定位文件到pos位置。
int skipBytes(int n) 從當前位置跳過n個字節(jié)。


(4)其他方法

void setLength(long newLength) 設置文件長度。

long length() 獲得文件的長度。

void close() 關閉文件。

FileChannel getChannel() 獲得與該流連接的文件通道對象。

FileDescriptor getFD() 獲得與該流連接的文件描述符對象。

? try {

? ? ? ? ? ? //創(chuàng)建隨機流

? ? ? ? ? ? RandomAccessFile in = new RandomAccessFile("青春贊歌.txt","rw");

? ? ? ? ? ? //讀取文件長度

? ? ? ? ? ? long length = in.length();

? ? ? ? ? ? //設定讀取位置

? ? ? ? ? ? long position = 0;

? ? ? ? ? ? //定位文件到當前位置

? ? ? ? ? ? in.seek(position);

? ? ? ? ? ? while (position<length){

? ? ? ? ? ? ? ? //讀取

? ? ? ? ? ? ? ? String str = in.readLine();

? ? ? ? ? ? ? ? //重新編碼

? ? ? ? ? ? ? ? byte b[] = str.getBytes("iso-8859-1");

? ? ? ? ? ? ? ? //轉換為字符串

? ? ? ? ? ? ? ? str = new String(b);

? ? ? ? ? ? ? ? //更新當前讀寫位置

? ? ? ? ? ? ? ? position = in.getFilePointer();

? ? ? ? ? ? ? ? System.out.println(str);

? ? ? ? ? ? }

? ? ? ? }catch (IOException e){

? ? ? ? ? ? e.printStackTrace();

? ? ? ? }


(六)對象流與序列化

構造方法:ObjectInputStream(InputStream in); ObjectOutputStream(OutputStream out)

相關方法: writeObject(Object obj) 將一個對象obj寫入到一個文件; readObject() 讀取一個對象到程序中

序列化:一個類如果實現(xiàn)了Serializable接口,那么這個類創(chuàng)建的對象就是所謂序列化的對象。

(八)Scanner解析文件

基本使用框架:

File file = new File("hello.java");

Scanner sc = new Scanner(file);

sc.useDelimiter(正則表達式);

三、題庫考查知識點整理

1、BufferedWriter流可以指向FileWriter流。

2、FileOutputStream輸出流按字節(jié)寫出數(shù)據(jù)。

3、如果程序要寫入一個文件,可以創(chuàng)建指向文件的FileWriter輸出流。

4、創(chuàng)建FileInputStream 對象,即文件字節(jié)輸入流可能觸發(fā)FileNotFoundException異常。

5、FileNotFoundException類是IOException類的子類。

6、FileInputStream流的int read(byte b[]) 方法從源中試圖讀取b.length個字節(jié)到字節(jié)數(shù)組b中,返回實際讀取的字節(jié)數(shù)目。如果到達文件的末尾,則返回-1。

7、BufferedReader流的源必須是字符輸入流(FileReader)。

8、FileOutputStream流順序地寫文件,只要不關閉流,每次調用write方法就順序地向目的地寫入內(nèi)容,直到流被關閉。

9、FileInputStream流順序地讀取文件,只要不關閉流,每次調用read方法就順序地讀取源中其余的內(nèi)容,直到源的末尾或流被關閉。


基于《java2實用教程》的java知識點復習整理【第五章——第十章】的評論 (共 條)

分享到微博請遵守國家法律
景洪市| 茂名市| 乐清市| 东平县| 双辽市| 津南区| 安图县| 安平县| 日喀则市| 西藏| 舟山市| 镇赉县| 准格尔旗| 台南市| 鄢陵县| 湘潭县| 武宣县| 富阳市| 绥江县| 百色市| 筠连县| 遵义市| 安泽县| 嵩明县| 安宁市| 盈江县| 潞西市| 宝兴县| 汉阴县| 龙山县| 禹城市| 安国市| 昌都县| 商丘市| 子长县| 石门县| 遂川县| 抚远县| 吴忠市| 孙吴县| 广丰县|