1. 程式人生 > >Java 知識點整理-1.基礎入門

Java 知識點整理-1.基礎入門

1、任何資料型別用+與字串相連線都會產生新的字串

2、Java中的字元char可以儲存一箇中文漢字

3、整數相除結果只能得到整數。

4 、整數想得到小數,把其中一個數變成小數,另一個數在運算的時候會自動型別提升

5、%運算子結果的符號只和左邊有關係,與右邊無關

6、任何一個正整數%2結果不是0就是1可以當作切換條件。

7、++ --運算子放在變數前面的時候,會先自身加一或者自身減一,然後再將結果賦值。

8、++ --運算子放在變數後面的時候,會先將變數中的值取出做賦值操作,然後再自身加一或者自身減一。

9、按Shift+Tab鍵向前縮排

10、當byte與int進行混合運算的時候,會提升為int型別,兩個int相加的結果還是int,賦值給byte會損失精度。然而++ --會預設加強制型別轉換符使結果與左邊型別相同。

11、當short與int進行混合運算的時候,會提升為int型別,兩個int相加的結果還是int,賦值給short會損失精度。然而+= -= *= /= %=會預設加強制型別轉換符使結果與左邊型別相同。

12、==不能寫成=

13、一個數據對另一個數據位異或兩次,該數本身不變。(交換兩個數:x=x^y; y=x^y; x=x^y)

14、<<: 左移  左邊最高位丟棄,右邊補齊0。向左移動幾位就是乘以2的幾次冪。

15、>>: 右移  最高位是0,左邊補齊0; 最高為是1,左邊補齊1。向右移動幾位就是除以2的幾次冪。

16、>>>: 無符號右移  無論最高位是0還是1,左邊補齊0。

17、比較表示式無論簡單還是複雜,結果必須是boolean型別。

18、int x = 10;是兩句話,int x 宣告是一句,x = 10賦值是一句。

19、一般來說:有左大括號就沒有分號,有分號就沒有左大括號 。

20、else後面是沒有比較表示式的,只有if後面有。

21、三元運算子實現的,都可以採用if語句實現。反之不成立。當if語句控制的操作是一個輸出語句的時候就不能。

22、switch(表示式)  表示式的值可以是byte,short,char,int,列舉,string字串。

23、 if - else if最後一個else可以省略,但是建議不要省略,可以對範圍外的錯誤值給出提示,switch中的default作用相同。

24、case後面只能是常量,不能是變數,而且,多個case後面的值不能出現相同的。

25、default可以在任意位置。但是建議在最後,因為它總是最後被執行。

26、break最後一個可以省略,其他最好不要省略。會出現一個現象:case穿透。

27、switch語句遇到break或執行到switch的右大括號結束。

28、switch建議判斷固定值的時候用。

29、if建議判斷區間或範圍的時候用。

30、for的迴圈體語句如果是一條語句,大括號可以省略;如果是多條語句,大括號不能省略。建議永遠不要省略。

31、do...while迴圈至少執行一次迴圈體。

32、for,while迴圈必須先判斷條件是否成立,然後決定是否執行迴圈體語句。

33、如果你想在迴圈結束後,繼續使用控制條件的變數,用while迴圈,否則用for迴圈。不知道用誰就用for迴圈。因為變數及早的從記憶體中釋放掉,可以提高記憶體的使用效率。 

34、一定要注意控制條件語句控制的那個變數的問題,不要弄丟了,否則就容易死迴圈。

35、兩種最簡單的死迴圈格式:   while(true){...}    for(;;){...} 

36、'\x' x表示任意,\是轉義符號,這種做法叫轉移字元。'\t'  tab鍵的位置    '\r'  回車   '\n'  換行   '\"'   '\'' 

37、break只能在switch和迴圈中使用。

38、continue只能在迴圈中使用。

39、控制跳轉語句標號:   標號:標記某個迴圈對其控制。標號組成規則:其實就是合法的識別符號。 

40、return的作用:返回;它的作用不是結束迴圈的,而是結束方法的。

41、break是跳出迴圈,continue是終止本次迴圈繼續下次迴圈。

42、方法呼叫(有具體返回值):單獨呼叫,一般來說沒有意義,不推薦。輸出呼叫,不夠好。因為我們可能需要針對結果進行進一步的操作。賦值呼叫,推薦。 

43、方法不呼叫不執行;方法與方法是平級關係,不能巢狀定義;方法定義的時候引數之間用逗號隔開;方法呼叫的時候不用在傳遞資料型別;如果方法有明確的返回值,一定要用return帶回一個值 。

44、方法呼叫:(無返回值,void) :只能單獨呼叫。

45、方法過載: 在同一個類中,方法名相同,引數列表不同。與返回值型別無關。

46、引數列表不同:引數個數不同;引數型別不同;引數的順序不同(算過載,但是在開發中不用) 

47、陣列可以看成是一個容器,是儲存同一種資料型別多個元素的集合。

48、陣列既可以儲存基本資料型別,也可以儲存引用資料型別。

49、陣列定義格式: 資料型別[] 陣列名 = new 資料型別[陣列的長度];

50、陣列的初始化就是為陣列開闢連續的記憶體空間,併為每個陣列元素賦予值 。

51、動態初始化只指定長度,由系統給出初始化值:資料型別[] 陣列名 = new 資料型別[陣列長度];

52、靜態初始化給出初始化值,由系統決定長度:資料型別[] 陣列名 = new 資料型別[]{元素1,元素2,…};

簡化格式:資料型別[] 陣列名 = {元素1,元素2,…};         宣告和賦值在同一行。

53、陣列的初始化不允許動靜結合。

54、 棧儲存區域性變數,堆儲存new出來的陣列或物件 。

55、ArrayIndexOutOfBoundsException:陣列索引越界異常。原因:你訪問了不存在的索引。

56、NullPointerException:空指標異常。原因:陣列已經不在指向堆記憶體了。而你還用陣列名去訪問元素。(當陣列引用賦值為null,再去呼叫陣列中的元素)

57、陣列遍歷:依次輸出陣列中的每一個元素;陣列的屬性:arr.length陣列的長度;陣列的最大索引:arr.length - 1;

58、 二維陣列表示: 1:資料型別 陣列名[][] = new 資料型別[m][n];  2:資料型別[] 陣列名[] = new 資料型別[m][n];

59、 二維陣列遍歷:外迴圈控制的是二維陣列的長度,其實就是一維陣列的個數;內迴圈控制的是一維陣列的長度。

60、 基本資料型別的值傳遞,不改變原值,因為呼叫後就會彈棧,區域性變數隨之消失。引用資料型別的值傳遞,改變原值,因為即使方法彈棧,但是堆記憶體陣列物件還在,可以通過地址繼續訪問。Java中到底是傳值還是傳址?Java中只有傳值,因為地址值也是值。(Java之父支援)