Content
學習鏈接:廖雪峯的官方網站裏的Java教程.
Java快速入門
-
JSR 規範,Java Specification Request;Java 規範要求
JCP 組織,Java Community Process;Java 社區進程 -
RI,Reference Implementation;參考實現
TCK,Technology Compatibility Kit;技術兼容包 -
IDE,Integrated Development Environment;集成開發環境
-
Java入口程序規定的方法必須是靜態方法,方法名必須爲main,括號內的參數必須是String數組
-
類,好的命名,首字母大寫
方法,好的命名,首字母小寫 -
特殊的多行註釋,以
/**
開頭,以*/
結束
寫在類和方法的定義處,可以用於自動創建文檔 -
快捷鍵
Ctrl + Shift + F
,格式化代碼 -
變量的一個重要特點是可以重新賦值 原有的值被覆蓋
-
一個字節8位,二進制表示範圍從
00000000 ~ 11111111
,換算成十進制是0 ~ 255
,換算成十六進制是00 ~ ff
-
Java只定義了帶符號的整型;最高位是符號位
-
因爲小數用科學計數法表示的時候,小數點是可以“浮動”的,所以稱爲浮點數
-
float 類型可最大表示3.4x1038,而 double 類型可最大表示1.79x10308
-
Java 語言對布爾類型的存儲並沒有做規定,因爲理論上存儲布爾類型只需要1 bit,但是通常JVM內部會把 boolean 表示爲4字節整數
-
Java的 char 類型除了可表示標準的ASCII碼外,還可以表示一個Unicode字符
-
常量的作用是用有意義的變量名來避免魔術數字 (Magic number)
常量名通常全部大寫 -
用 var 定義變量,只是少寫了變量名
-
語句塊,
{}
-
定義變量時,要遵循作用域最小化原則,儘量將變量定義在儘可能小的作用域 20.3.1
-
整數運算永遠是精確的
除數爲 0 時 運行時將報錯,但編譯不會報錯
溢出不會出錯,卻會得到一個奇怪的結果(超出 int 範圍) -
n++ 表示先引用 n 再加 1
-
不帶符號的右移運算,使用 >>>,它的特點是符號位跟着動
對 byte 和 short 類型進行移位時,會首先轉換爲 int 再進行位移
左移實際上就是不斷地 ×2,右移實際上就是不斷地 ÷2 -
對兩個整數進行位運算,實際上就是按位對齊,然後依次對每一位進行運算
按位與運算實際上可以看作兩個整數表示的 IP 地址10.0.17.77
和10.0.17.0
,通過與運算,可以快速判斷一個 IP 是否在給定的網段內 -
超出範圍的強制轉型會得到錯誤的結果,因爲高位字節直接被扔掉了
-
浮點數不能做位運算和移位運算;浮點數常常無法精確表示
十進制的 0.1 換算成二進制是一個無限循環小數
0.5 這個浮點數卻可以精確地表示 -
比較兩個浮點數是否相等,正確的比較方法是判斷兩個浮點數之差的絕對值是否小於一個很小的數
Math.abs(x - 0.1) < 0.00001
- 浮點數運算在除數爲 0 時,不會報錯,但會返回幾個特殊值
NaN、Infinity、-Infinity·
-
浮點數強制轉型爲整數,小數部分會被丟掉;若溢出,返回整型的最大值
-
如果一個布爾運算的表達式能提前確定結果,則後續的計算不再執行,直接返回結果;(短路運算)
-
三元運算符中,x 和 y 的類型必須相同;因爲返回值是二者之一 20.3.2
-
因爲Java在內存中總是使用Unicode表示字符,
所以,一個英文字符和一箇中文字符都用一個char類型表示,它們都佔用兩個字節 -
Java的編譯器對字符串做了特殊照顧,可以使用 + 連接任意字符串和其他數據類型
-
字符串不可變
-
引用類型的變量可以指向一個空值null,它表示不存在,即該變量不指向任何對象
-
數組一旦創建後,大小就不可改變
數組是引用類型 -
不推薦 省略 if 語句塊的花括號 的寫法
-
判斷引用類型是否指向同一個對象,用
==
判斷其內容是否相等,用equals()
爲避免空指針異常 NullPointException:
s1 != null && s1.equals("hello")
- 當所有 case 都不匹配後,執行 default (最好寫上)
Java 12 後,新的switch語法,不但不需要break,還可以直接返回值
case "mango" -> {
System.out.println("Selected mango");
System.out.println("Good choice!");
}
//分隔
int opt = switch (fruit) {
case "apple" -> 1;
case "pear", "mango" -> 2;
default -> {
int code = fruit.hashCode();
yield code; // switch語句返回值
}
}; // 注意賦值語句要以;結束
-
for 循環的功能非常強大,它使用計數器實現循環,計數器變量通常命名爲 i
for 循環會先初始化計數器,然後,在每次循環前檢測循環條件,在每次循環後更新計數器 -
for each 循環的變量 n 不再是計數器,而是直接對應到數組的每個元素,迭代
但是無法拿到數組元素的索引 -
對於數組,有
toString()
和sort()
兩個常用方法
多維數組就是數組裏面嵌套數組
//a, b交換值
a = a + b;
b = a - b;
a = a - b;
- 命令行參數,類型是
String[]
字符數組,由JVM接收 用戶輸入 並傳給 main 方法;
End.