java基礎知識查漏補缺

                                                      這算是一個我自己弄的一個查漏補缺的小東西吧。。。

目錄

java程序3個步驟:

常量:

數據類型:

變量:

數據類型轉換:

強制類型類型轉換:

數字和字符的對照關係表(編碼表)

運算符等等的:

四則運算中的+號

自增自減運算符:只有變量纔可使用,常量不行。

複合賦值運算符:

定義一個方法的格式:

java9裏面的新特性,jshell

switch語句使用的注意事項:

方法:

方法的三種調用:

使用方法時的注意事項:

方法的重載:

數組:

使用動態初始化數組的時候,其中的元素將會自動擁有一個默認值:

java內存需要劃分成5個部分:

一個數組的內存圖:

兩個數組的內存圖:

兩個引用指向同一個數組:

類與對象的關係:

局部變量和成員變量

面向對象三大特徵:封裝、繼承、多態。

this關鍵字的作用:

private 關鍵字的作用及其使用:

構造方法:

一個標準的類通常要擁有下面四部分組成部分:


前言:是java9.但是其大部分特性都差不多啊。。語法也差不多= =emmm我只是想和其他稍微區分一丟丟。哦。。我是把自己稍微覺得,還需要再看看的知識進行了整理。。算是個人筆記了。這部分存放的應該是我覺得比較簡單的java知識。

還有些東西沒有添加上去,不代表只有那些哦!有些。。。懶得寫。。+ 看視頻還沒複習到那裏。。

 

java程序3個步驟:

編寫源程序(.java源程序),編譯源程序(.class文件  字節碼文件),運行(JVM運行)

 

常量:

程序運行期間不發生改變的量。

1.字符串常量:雙引號引起來的。

2.整數常量:直接寫上的數字,沒有小數點。

3.浮點數常量:直接寫上的數字,有小數點。

4.字符常量:單引號引起來的。

5.布爾常量:只有兩種取值:true\false  

6.空常量:null。沒有任何數據

注意:空常量不能直接用來打印輸出。

System.out.println(1024);   // 這就是一個整數,默認是int類型

System.out.println(3.14);    // 這就是一個浮點數,默認是double類型。

 

數據類型:

基本數據類型:整數型、浮點型、字符型、布爾型。(四類八種)

引用數據類型:字符串、數組、類、接口、lambda

注意:

1.字符串不是基本類型,而是引用類型。

2.浮點型可能只是一個近似值,並非精確的值。

3.數據範圍和字節數不一定相關,例如float數據範圍比long更加廣泛,但是float是4字節,long是8字節。

4.浮點數當中默認類型是double。如果一定要使用float類型,需要加上一個後綴F(f)。

 如果是整數,默認爲int類型,如果一定要使用long類型,需要加上一個後綴L(l)。推薦使用大寫字母后綴。

long num6 = 3000000000;  //這樣沒加後綴的是會被報錯的。

long num6 = 3000000000L;//這樣的纔是對的。

int 最高只能表示21個億

 

變量:

程序運行期間,內容可以發生改變的量。

1.數據類型 變量名稱;   //創建了一個變量

變量名稱=數據值;     //賦值。

2.數據類型 變量名稱=數據值;     //再創建一個變量的同時,立刻放入指定的數據值。

注意事項:使用變量時

1.如果創建多個變量,那麼變量之間的名稱不可重複。

2.對於float和long類型來說,字母后綴F和L不要丟掉,

3.如果使用byte或者short類型的變量,那麼右側的數據值不能超過左側類型的的範圍。

4.沒有賦值的變量,不能直接使用;一定要複製之後,才能使用。

5.變量使用不能超過作用於的範圍。

6.可以通過一個語句來創建多個變量,但一般情況不推薦。

 

數據類型轉換:

1.當數據類型不一樣時,將會發生數據類型轉換。

自動類型轉換(隱式)

       1.特點:代碼不需要進行特殊處理,自動完成

       2.規則:數據範圍從小到大

注意事項:

1.float num=30L;

左邊float類型,右邊long類型。long--->float,範圍是float更大一些,所以符合從小到大規則。

 

強制類型類型轉換:

       1.特點:代碼需要進行特殊的格式處理,不能自動完成。

       2.格式:範圍小的類型 範圍小的變量名=(範圍小的類型)原本範圍大的數據

注意事項:

1.強制類型轉換一般不推薦使用,因爲有可能發生精度損失、數據溢出。

2.byte/short/char 這三種類型都可以發生數學運算,例如加法“+”

3.byte/short/char 這三種類型在運算的時候,首先都會被提升成int類型,然後計算。

4.右側數值大小不能超過左側的類型範圍。

5.boolean類型不能發生數據類型轉換。

編譯器優化注意事項:

1. 如果沒有超過左側範圍,編譯器補上強轉。

對於byte/short/char三種類型來說,如果右側賦值的數值沒有超過範圍

那麼javac編譯器將會自動隱含地爲我們補上一個(byte)(short)(char)

byte num1=30;  //左側是byte,右側是int,但是自動補上了強轉。

2.如果右側超過了左側範圍,那麼編譯器報錯。

3.在給變量進行賦值的時候,如果右側的表達式中全是常量,沒有任何變量,那麼編譯器javac將會直接將若干個常量表達式計算得到結果。

右側的常量結果數值,沒有超過左側範圍,所以正確。

這稱爲“編譯器的常量優化”

但是注意:一旦表達式當中有變量參與,那麼就不能進行這種優化了。

4.short a=5;

short b=8;

//short + short --> int + int -->int

short result = a+b;  //錯誤寫法!左側需要的是int類型。

 

數字和字符的對照關係表(編碼表)

ASCLL碼值:

48 0

65 A

97 a

 

運算符等等的:

運算符:進行特定操作的符號。

表達式:用運算符連起來的式子叫做表達式。

四則運算:+-*/

取模運算:只有對於整數的除法來說,取模運算符纔有餘數的意義。

注意事項:

1.一旦運算當中有不同類型的數據,那麼結果將會是數據類型範圍大的那種。

 

四則運算中的+號

1.對於數值來說,就是加法

2.對於字符類型char,在計算之前,char會被提升稱爲int,然後在計算

3.對於字符串String來說,加號代表字符串連接操作。

任何數據類型和字符串進行連接的時候,結果都會變成字符串。

String str="java";

System.out.println(str + 20 +30); //顯示java2030

 

自增自減運算符:只有變量纔可使用,常量不行。

 

複合賦值運算符:

+=    a=a+b;

-=    a=a-b;

*=    a=a*b;

/=    a=a/b;

%=    a=a%b

注意事項:

1.只有變量才能使用賦值運算符,常量不能進行復制。

2.複合賦值運算符其中隱含了一個強制類型轉換。

 

定義一個方法的格式:

public static void 方法名稱(){  方法體 }

方法名稱的命名規則和變量一樣,使用小駝峯式。

方法體:也就是一個大括號當中可以包含任意條語句。

注意事項:

1.方法定義的先後順序無所謂。

2.方法的定義不能產生嵌套包含關係。

3.方法定義好了之後,不會執行的。如果想要執行,一定要進行方法的調用。

如何調用方法,格式:

方法名稱();

 

java9裏面的新特性,jshell

它是一個輕量級的小工具,用於操作簡單的東西,不值得去保存的。

退出它  /exit

 

switch語句使用的注意事項:

1.多個case後面的數值不可以重複

2.switch後面小括號當中只能是下列數據類型:

基本數據類型:byte/short/char/int

引用數據類型:String字符串、enum枚舉

3.switch語句格式可以很靈活:前後順序可以顛倒,而且break語句還可以省略。

“匹配哪一個case就從哪一個位置向下執行,直到遇到了break或者整體結束爲止。”

 

 

方法:

若干語句的功能及和。

方法名稱:方法的名字,規則和變量一樣,小駝峯。

參數:進入方法的數據

返回值:從方法中出來的數據。

定義方法的完整格式:

修飾符 返回值類型 方法名稱(參數類型 參數名稱,。。。){

       方法體

       return 返回值;

}

return :兩個作用,第一停止當前方法,第二將後面的返回值還給調用處。

return後面的返回值需要與方法的返回值類型保持一致。

 

方法的三種調用:

1.單獨調用:方法名稱(參數);

2.打印調用

3.賦值調用

注意:返回值類型爲void,這種方法只能夠單獨調用,不能進行打印調用或者賦值調用。

 

使用方法時的注意事項:

1.方法應該定義在類當中,但是不能再方法當中在定義方法。不能嵌套。

2.方法定義的前後順序無所謂。

3.方法定義之後不會執行,如果希望執行,一定要調用:單獨調用、打印調用、賦值調用。

4.如果方法有返回值,那麼必須協商“return 返回值”,不能沒有。

5.return後面的返回值數據,必須和方法的返回值類型,對應起來。

6.對於一個void沒有返回值的方法,不能寫return後面的返回值,只能寫return自己。

7.對於void方法當中最後一行的return可以省略不寫。

8.一個方法當中可以有多個return語句,但是必須保證同時只有一個會被執行到。

 

方法的重載:

多個方法的名稱一樣,但是參數列表不一樣。

好處,只需要記住唯一一個方法名稱,就可以實現類似的多個功能。

方法的重載與下列因素相關:

1.參數個數不同

2.參數類型不同。

3.參數的多類型順序不同。

方法重載與下列因素無關:

1.與參數的名稱無關

2.與方法的返回值類型無關。

3.與修飾符無關

//在調用輸出語句的時候,println方法其實就是進行了多種數據類型的重載形式

 

數組:

是一種容器,可以同屬存放多個數據值。

特點:

1.是一種引用數據類型。

2.其中的多個數據,類型必須統一。

3.數組長度在程序運行期間不可改變。

數組的初始化:

1.動態初始化(指定長度)

數據類型[] 數組名稱=new 數據類型[數組長度];

2.靜態初始化(指定內容)

注意事項:

雖然靜態初始化沒有直接告訴長度,但是根據大括號裏面的元素具體內容,也可以推算出長度。

直接打印數組名稱,得到的是數組對應的:內存地址哈希值。

 

使用動態初始化數組的時候,其中的元素將會自動擁有一個默認值:

規則如下:

如果是整數類型,那麼默認爲0;

浮點類型,默認0.0

字符類型,默認'\u0000'

布爾類型,false

引用類型,null

 

java內存需要劃分成5個部分:

1.棧:

存放方法中的局部變量。方法的運行一定要在棧中運行

局部變量:方法的參數,或者是方法{}內部的變量

作用域,一旦超出作用域,立刻從棧內存當中消失。

2.堆

凡是new出來的東西,都在堆當中。

堆內存裏面的東西都有一個地址值:16禁止。

堆內存裏面的數據,都有默認值。規則:

整數類型,默認爲0;

浮點類型,默認0.0

字符類型,默認'\u0000'

布爾類型,false

引用類型,null

3.方法區:

存儲.class相關信息,包含方法的信息。

4.本地方法棧。與操作系統相關。

5.寄存器:與cpu相關。

 

一個數組的內存圖:

(嗷,我這個截圖的視頻的!)

兩個數組的內存圖:

 

兩個引用指向同一個數組:

copy的視頻截圖

 

 

類與對象的關係:

1.類是對一類事物的描述,是抽象的。

2.對象是一類事物的實例,是具體的。

3.類是對象的模板,對象是類的實體。

 

局部變量和成員變量

1.定義的位置不一樣【重點】

局部變量:在方法的內部。

成員變量:在方法的外部,直接寫在類當中。

2.作用範圍不一樣【重點】

局部變量:只有方法當中纔可以使用,出了方法就不能再用了。

成員變量:整個類全都可以通用。

3.默認值不一樣【重點】

局部變量:沒有默認值,如果想要使用,必須手動進行賦值。

成員變量:如果沒有賦值,會有默認值,規則和數組一樣

4.內存的位置不一樣

局部變量:位於棧內存。

成員變量:位於堆內存。

5.生命週期不一樣

局部變量:隨着方法進棧而誕生,隨着方法出棧而消失。

成員變量:隨着對象創建二誕生,隨着對象被垃圾回收而消失。

 

面向對象三大特徵:封裝、繼承、多態。

封裝性在Java當中的體現:

1.方法就是一種封裝

2.關鍵字private也是一種封裝。

封裝就是將一些細節信息隱藏起來,對於外界不可見。

 

this關鍵字的作用:

當方法的局部變量和類的成員變量重名的時候,根據“就近原則”,有限使用局部變量。

如果需要訪問本類當中的成員變量,需要使用格式:this.成員變量名

“通過誰調用的方法,誰就是this”

 

private 關鍵字的作用及其使用:

1.一旦使用了private進行修飾,那麼本類當中仍然可以隨意訪問,但是超出了本類範圍之外,就不能再直接訪問了。

2.間接訪問private成員變量,就是定義一對兒getter/setter方法。

3.必須叫setXxx或者時getXxx命名規則。

對於Getter來說,不能有參數,返回值類型和成員變量對應。

對於Setter來說,不能有返回值,參數類型和成員變量對應。

 

構造方法:

構造方法是專門用來創建對象的方法,當我們通過關鍵字new來創建對象時,就是在調用構造方法。

格式:

public 類名稱(參數類型 參數名稱){

       方法體

}

注意事項:

1.構造方法的名稱必須和所在的類名完全一樣,就連大小寫也要一樣。

2.構造方法不要寫返回值類型,連void都不寫。

3.構造方法不能return一個具體的返回值

4.如果沒有編寫任何構造方法,那麼編譯器將會默認贈送一個沒有參數的構造方法,其方法體什麼事情都不做。

5.一旦編寫了至少一個構造方法,那麼編譯器將不再贈送。

6.構造方法也是可以進行重載的。

重載:方法名稱相同,參數列表不同。

 

一個標準的類通常要擁有下面四部分組成部分:

這樣標準的類也叫做Java Bean

1.所有的成員變量都要使用private關鍵字修飾

2.爲每一個成員變量編寫一對getter/setter方法

3.編寫一個無參數的構造方法

4.編寫一個全參數的構造方法

//快速生成get/set:    alt+insert    【getter/setter】

//快速生成構造方法:   alt+insert    【Constructor】

//如果不是快速生成就是【code】-【generate】//ideaij快捷鍵。都是

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章