JAVA複習資料

第二章(基本資料型別與陣列)

識別符號

識別符號由字母,下劃線,美元符號和數字組成,第一個字元不能是數字, f a l s e false false不是識別符號。

關鍵字

關鍵詞是Java語言中已經被賦予特定意義的一些單詞,不可以把關鍵詞作為名字來用。true 和 false 都不是關鍵詞

基本資料型別

boolean , char , byte , short , int , long ,float , double

char 型別是兩個位元組的,在unicode表是從0開始到65535,在java裡面是沒有unsigned型別的

float型常量和double型常量

float常量必須用F或者f作為字尾。double常量用D或者d為字尾。但double常量允許省略字尾

獲取陣列的長度

獲得一維陣列的長度,獲取二維陣列中一維陣列的個數。一維陣列名。length 二維陣列名。length

Example1

JAVA複習資料

裡面程式碼2錯誤:因為int轉byte,由大轉小,需要強制轉換。同理程式碼3 long long 轉 int ,程式碼3不能把浮點型別變數賦給整型變數,程式碼5需要有後綴 f ,否則就預設是double型別,需要進行強制轉換。

Example2

JAVA複習資料

先把 b陣列填完,當前的 b陣列是:

JAVA複習資料

然後進行操作相當於把a的引用賦值給b[0] , 現在就變成了:

JAVA複習資料

再進行一個賦值操作,就變成了:

JAVA複習資料

這個時候輸出b[0][3] 的值為30,同時a[1] 的值也變成了7,因為a中的值也被修改了,

在於a的引用賦值給了b[0],那麼b[0] 和 a 指向同一塊記憶體地址

,那麼如果修改了b[0] 中的值,a的值也會跟著相應的改變。

Example3

btye取值範圍-128至127

short取值範圍-32768至32767

int取值範圍-2147483648至2147483647

long取值範圍-9223372036854775808至9223372036854775807

float取值範圍1。4E-45至3。4028235E38

double取值範圍4。9E-324至1。79769E308

char 型別是兩個位元組的,在unicode表是從0開始到65535,在java裡面是沒有unsigned型別的

第三章(運算子,表示式,語句)

精度

上 char 的精度比 short 高,當 (char) + (int)時 ,最後的結果答案應該為 (char) ,兩個(char)型別相加可能會爆 (char) 型別,最後的答案可以用 (int) 來接收。

精度遞增的話:(從低到高)

byte -> short -> char -> int -> long -> float -> double

Java在計算算術表示式的時候,遵守以下的規則:

如果表示式裡面有 double,則按 double 進行運算。

如果表示式的最高精度是 float ,則按 float 進行運算。

如果表示式的最高精度是 long ,則按 long 進行運算。

如果表示式的最高精度低於int , 則按 int 進行運算。

JAVA複習資料

這道題的答案應該選C 因為A選項97+12是可以賦給short型別的,D選項與A選項同理,可以賦給byte型別,B選項和C選項差的只有一個常數,B和C ,B對的原因在於1是數字常量。編譯器編譯的時候,會進行自動合併,不會做型別轉換。在編譯階段就能完成。C錯的原因在於,x是變數,在編譯階段無法合併,只能在執行的時編譯,執行時發現x是整型,‘a’+x自動轉換成整型,無法直接賦值給char型別,需要進行強制轉換(char)(‘a’+x)

example1

JAVA複習資料

輸出答案為:

JAVA複習資料

switch語句如果某個case中沒有break的話,就會一直執行後面case的相關語句,知道遇到break為止。

第四章(類與物件)

面嚮物件語言特點分為 1。 封裝性 2。 繼承 3。 多型

類是一種用於建立具體例項(物件)的資料型別、類體中主要由兩部分構成:

變數的宣告:用來儲存屬性的值(體現物件的屬性)

方法的宣告:方法可以對類中宣告的變數進行操作,給出演算法(體現物件所具有的行為)

宣告變數部分所宣告的變數被稱為成員變數或域變數

成員變數包括基本型別:整型、浮點型、字元型、邏輯型別 ; 還包括引用型別:陣列、物件和介面

成員變數的預設值:java編譯器會為其指定預設值。對於boolean變數,預設值是false;對於byte,short, int, long變數,預設值是0,對於float 和double 變數預設值是0。0;對於“引用型”變數(陣列以及物件),預設值是null

方法的定義

區域性變數只在方法內有效,而且與其宣告的位置有關。方法的引數在整個方法內都有效,方法內的區域性變數從宣告它的位置開始有效。

區分成員變數和區域性變數:成員變數和區域性變數名字相同,成員變數被隱藏,即該成員變數在這個方法內失效,如果想使用隱藏的成員變數,必須使用關鍵字 this,區域性變數沒有預設值

JAVA複習資料

類圖的畫法

第一層是:名字層 如果該名字是常規字形表明該類是具體類;如果類的名字是斜體字形表明該類是抽象類

第二層是:變數層 列出類的成員變數及型別 格式是 變數名字:型別

第三層是:方法層 列出類中的方法,格式是 方法名字:型別

構造方法

類中的構造方法的名字必須和它所在的類的名字完全相同,而且沒有型別。允許一個類中編寫若干個構造方法,但必須保證它們的引數不同,引數不同是指引數的個數不同,或引數的個數相同,但對應列表中的某個引數型別不同。

若類中沒有編寫構造方法,系統會預設該類只有一個構造方法,該預設的構造方法是無引數的,且方法體裡面沒有語句。

建立物件

如果在類中定義了一個或多個構造方法,那麼java不提供預設的構造方法

JAVA複習資料

物件的引用和實體

一個類宣告的兩個物件如果具有相同的引用,兩者就具有相同的引用,兩者就具有完全相同的變數。且java裡面存在垃圾收集機制,這種機制週期的檢測某個實體是否已不在被任何物件所擁有,如發現,則釋放實體佔用的記憶體。引用

方法過載

方法過載要求方法名相同,引數列表不同,可以是引數個數或者型別不同。構造方法也可以是過載的

類宣告

類宣告只能有public和友好類進行宣告

protect 允許在同一個包中或者是子類呼叫

私有變數,私有方法 不能直接使用物件呼叫

第五章(子類與繼承)

子類與繼承

如果子類和父類在同一個包裡,那麼子類繼承其父類中不是private的成員變數作為自己的成員變數,並且也自然地繼承了父類中不是private的方法不是private的方法,繼承的成員變數和方法的訪問許可權保持不變。

當子類和父類不在同一個包裡時,父類中的private和友好訪問許可權的成員變數不會被子類繼承,也就是說,子類只繼承父類的protected和public訪問許可權的成員變數作為子類的成員變數,同理方法一樣。

方法重寫需滿足

父類中的方法和子類中的方法

方法名必須一致

方法引數必須一致

子類的方法的訪問修飾符不能縮小訪問許可權

返回值型別要一致

成員變數的隱藏和方法重寫

宣告的成員變數的名字和從父類繼承來的成員變數的名字相同(宣告的型別可以不同),在這種情況下子類就會隱藏所繼承類來的成員變數。

方法重寫,子類一旦重寫了父類的方法f(),就隱藏了繼承的繼承的方法f(),那麼子類物件呼叫方法f()呼叫的一定是重寫方法。如果子類想使用被隱藏的成員變數或方法,必須使用關鍵詞super

如果子類隱藏了繼承的成員變數m,那麼子類繼承的方法中操作的m,是被子類隱藏的m,而子類新增或重寫的方法中操作的m一定是子類新宣告的成員變數m。

重寫的語法規則 重寫的方法的名字,引數個數,引數的型別和父類的方法完全相同。

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

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

如果在子類中使用被子類隱藏的成員變數或方法,就需要使用關鍵詞super 。例如super。x 、super。play() 就是訪問和呼叫的被子類隱藏的成員變數 x 和方法 play() 。

使用super呼叫父類的構造方法,由於子類不繼承父類的構造方法,所以子類在其構造方法中需使用super來呼叫父類的構造方法。

上轉型物件

上轉型物件不能使用子類新增成員(包括成員變數,成員方法),只能使用子類重寫父類的方法,被子類隱藏的父類變數;子類未重寫的父類方法,未被隱藏的父類成員變數。

JAVA複習資料

abstract類

使用關鍵詞abstract修飾的類被稱為abstract類(抽象類)

用關鍵詞abstract修飾的方法稱為abstract方法(抽象方法)

只有abstract類才可以有abstract方法,也可以擁有非abstract方法,只有abstract類不能用new識別符號建立物件,且abstract的物件可以為上轉型物件

private :因為一個abstract方法需要被重寫,所以不能修飾為private

final:因為一個abstract方法需要被重寫。被final修飾的方法是不能被重寫的,所以不能同final共存

static:因為一個abstract方法沒有方法體。靜態方法需要對方法體執行內容分配空間,所以不能同static共存;(abstract是沒有實現的,不能產生物件,而是static是屬於類的,類本身是已經存在的物件)

JAVA複習資料

上轉型物件訪問的是被隱藏的成員變數 呼叫的是子類重寫的方法

JAVA複習資料

【程式碼1】呼叫b物件的f方法,b物件是B類例項化的,呼叫的是B類自己的f方法,傳入10。0和8。0後,用super關鍵字呼叫了父類的f方法,得到18。0賦值給m,最後返回18。0+10。0*8。0也就是98。0。

【程式碼2】呼叫B類中的靜態方法g傳入3,方法內又去呼叫父類中的g方法傳入3,得到9賦值給m後,輸出9+3也就是12。

【程式碼3】a物件是上轉型物件,上轉型物件可以呼叫重寫父類的方法以及父類派生的方法,所以a呼叫的f方法是它重寫的方法,那麼具體過程就跟【程式碼1】相同,答案為98。0

【程式碼4】在於g方法是靜態方法,靜態方法是不允許被重寫的,所以B類中的g方法相當於該類特有的方法,那麼a呼叫的g方法實際上是父類的,輸出結果為9 。

第六章(介面與實現)

介面的意義

使 java 程式間接實現了多繼承

介面更加直接的設計了整個程式的結構,方便程式的擴充套件和維護

程式的設計人員可以透過面向介面程式設計減少設計工作的複雜度

介面代表一種能力,實現介面的同時就代表這個型別的物件擁有了這種能力

介面的語法規則

介面中所有屬性都是:共有靜態常量 public,會預設加上public static final 修飾

介面中所有方法都是:共有抽象方法 public

介面中不允許有構造方法

介面不能例項化

只有default方法和static方法可以新增方法體

實現介面的類如果不能實現所有介面中待重寫的方法,則必須設定為抽象類

介面可以實現多繼承,即一個子介面可以同時繼承多個父介面

一個類可以繼承自一個父類,同時實現多個介面

當一個類同時實現多介面,且其中同時具有相同方法時,實現類需要重寫該方法,否則會編譯報錯

介面中的抽象方法預設是public類,那麼類在重寫介面方法時不僅要去掉abstract修飾符,給出方法體,而且方法的訪問許可權一定要明顯地用public來修飾(不能降低訪問許可權)

面向介面程式設計

使用介面進行程式設計的核心思想是使用介面回撥,即介面變數存放實現該介面的類的物件的引用,從而介面變數就可以回撥類實現的介面方法

第七章(異常類)

異常類就是程式執行時可能出現的一些錯誤,Exception是所有異常的父類,Java使用throw關鍵詞丟擲一個Exception子類的例項表示異常發生

java。lang包中的Integer類呼叫其類方法可以將“數字”格式的字串,如“6789”,轉化成int型別,但是試圖將字串“ab89”轉化成數字時,方法parseInt()在執行過程中就會丟擲NumberFormatException物件,及程式執行出現NumberFormatException異常

java允許定義方法時宣告該方法呼叫過程的可能出現的異常,即允許方法呼叫過程中丟擲異常物件,終止當前方法的繼續執行。

try-catch語句

JAVA複習資料

Java使用try-catch語句來處理異常,將可能出現的異常操作放在try-catch語句的try部分,一旦try部分丟擲異常物件,或呼叫某個可能丟擲異常物件的方法,並且該方法丟擲了異常物件,那麼try部分將立刻結束執行,轉向執行相應的catch部分。所以程式可以將發生異常後的處理放在catch部分。try-catch語句可以由幾個catch組成,分別處理發生的相應異常。

各個catch引數中的異常類都是Exception的某個子類,表明try部分可能發生的異常,這些子類之間不能有父子關係,否則保留一個含有父類引數的catch即可。自定義異常類

在編寫程式時可以拓展Exception類定義自己的異常類

一個方法在宣告時可以使用throws關鍵詞宣告要產生的若干個異常

使用throw關鍵詞丟擲該異常物件,至該方法結束

JAVA複習資料

答案:你好

fine thanks

一個方法在宣告時可以使用throws關鍵字宣告要產生的若干個異常,並在該方法的方法體中具體給出產生異常的操作,即用相應的異常類建立物件,並使用throw關鍵字丟擲異常物件,導致該方法結束執行。try-catch語句捕獲到這個異常,輸出你好。

在執行try-catch語句後,執行finally子語句,也就是說,無論在try部分是否發生過異常,finally子語句都會被執行。

如果在try-catch語句中執行了return語句,那麼finally子語句依然會被執行,

try-catch語句中執行了程式退出程式碼,即執行System。exit(0);,則不執行finally子語句。

第八章(常用實用類)

String類

String 類在java。lang包中,由於java。lang包中的類被預設引入,java把String 類定義為 final 類,因此使用者不能拓展String 類,即String 類不可以有子類

String 物件可以用“+”進行並置運算,即首尾相接得到一個新的String 物件

length()方法用來獲取一個String物件的字元序列的長度

equals(string s)方法比較當前 String 物件的字元序列是否引數s指定的String 物件的字元序列相同,一樣的話返回true

startWith(String s),endWith(String s),判斷當前字元序列字首是否是引數指定的String 物件s的字元序列

compareTo(String s)相同返回0,當前String物件的字元序列與s的相同,返回0,如果大於s的字元序列,該方法返回正值,不然返回-1

contains(String s)方法判斷當前String物件的字元序列是否包含引數s的字元序列

ndexOf(String s)找到首次檢測到出現str的字元序列的位置,並返回該位置,沒有檢索到返回-1

substring(int startpoint)複製當前String 物件的字元序列中的startpoint位置到最後位置上的字元所得到的字元序列。

如果是substring(int start ,int end)的方法獲得一個新的物件,新的String 物件的字元序列從start到end-1的位置上的字元

trim()這樣是去掉前後空格的字元序列

字串與基本資料的相互轉換 int x=parseInt(s);string s=valueOf(int m);

StringTokenizer類

StringTokenizer(String s):為String物件s構造一個分析器。使用預設的分隔符標記,即換行符,回車符,tab符,空格符,進紙符做分隔標記

StringTokenizer(String s,String delim):為String物件s構造一個分析器。引數delim的字元序列中的字元的任意排列作為分隔標記