Java核心技術 ( 卷 I ) 讀書筆記(第一~三章)

因爲開學要學Java,只有六週,Python是暑假自己學的,Java結束後繼續吧,而且我同時再看程序設計競賽,好看,但計科的男人不能哭

Java核心技術 ( 卷 I ) 讀書筆記(第一~三章)

注:先修C++,只標記Java與C++不同或特別重要的語法。

第一章 Java程序設計概述

第二章 Java程序設計環境

  1. JDK:Java Development Kit
  2. JRE:Java Runtime Environment
  3. SE:Standard Edition
  4. EE:Enterprise Edition
  5. ME:Micro Edition
  6. CamelCase:駝峯命名法。如果名字由多個單詞組成,每一個單詞的第一個字母都應該大寫。
  7. 源代碼的文件名必須與公共類的名字相同,並用 .java 作爲拓展名。
  8. 註釋:Java中前兩種註釋和C++一樣,第三種註釋可以自動地生成文檔,這種註釋使用 \** 開始,以 */ 結束。
    /**
    * This is the first sample program in Core Java Chapter 3
    * @version 1.01 1997-03-22
    * @author Gary Cornell
    */
  9. 數據類型: 8中基本類型( primitive type), 沒有無符號類型。
    • int : 4字節
    • short:2字節
    • long:8字節。長整型數值有一個後綴L。
    • byte:1字節
    • float:4字節。有效位數6~7位。有後綴F。
    • double:8字節。有效位數15位。
    • boolean:1字節。整數值和布爾值之間不可以進行互相轉換。
    • char:1字節
      從Java 7開始,加上前綴 0b 就可以寫二進制數,如0b1001就是9。從Java 7開始還可以爲數字字面量加下劃線,增強可讀性,如1000_1101_1000。在JDK 5.0中可以使用十六進制表示浮點數值,如0x1.0p-3, 其中 p 表示指數。
      表示溢出和出錯情況的三個特殊浮點數值:正無窮大,負無窮大,NaN(不是一個數字)。不能這樣檢測一歌特定值是否等於Double.NaN, 但可以使用 Double.isNaN(x) 判斷x是不是一個數字。
      轉義序列符 \u 表示Unicode代碼單元的編碼,除了可以出現在字符常量或字符串內,還可以出現在之外,而其他轉移序列符不可以。public static void main(String\u005B\u005D args)
      代碼點(Code point):是指與一個編碼表中的某個字符對應的代碼值。Unicode 中代碼點可分爲17個代碼級別(Code plane),第一個代碼級別稱爲基本的多語言級別(basic multilingual plane), 包括經典的Unicode代碼,其餘的16個附加級別,包括一些輔助字符(supplement character)。
  10. 常量:Java中,使用 final 指示常量。習慣上常量名使用全大寫。
  11. 在main方法中,所有指令都將使用嚴格的浮點計算,如果將一個類或方法標記爲 strictfp, 那這個類中的所有方法或這個方法都將使用嚴格的浮點計算。
    public static strictfp void main(String[] argd)
  12. 位運算:使用2的冪次方的 & 運算可以將其他位屏蔽掉。>>> 將使用0填充高位,>> 運算符使用符號位填充高位,沒有<<<運算符。對移位運算符右側的參數需要進行 膜32 的運算(左邊是long,這時模64),例如,1<<35 和 1<<3的結果是一樣的。
  13. Math.round(x) 方法可以對浮點數進行舍入運算,得到最接近的整數(long)。
  14. 子串:String類的 substring( int beginIndex, int endIndex )返回索引從 beginIndex 到 endIndex-1 的子串。
  15. 拼接:當將一個字符串和一個非字符串的數值進行拼接時,後者就會轉換成字符串。
  16. equals(Object anObject):檢測兩個字符串是否相等,是返回True;否則返回false。可以使字符串變量或常量。equalsIgnoreCase()不區分大小寫。== 雲端副不能用來判斷兩個字符串是否相等,只能確定兩個字符串是否放置在同一個位置。
  17. 空串:”“, 是一個Java對象,有自己的串長度 (0) 和內容 (空)。String還可以存放特殊值 null,目前沒有雨任何對象關聯。
    if(str != null && str != "") #要先檢查不爲null
  18. String.length() 方法返回採用UTF-15編碼表示的給定字符串所需要的代碼單元的數量。String.charAt(n) 將返回位置n的代碼單元。
  19. 構建字符串:使用 StringBuilder類——字符串構造器。當每次需要添加一部分內容時,就調用 append() 方法,在需要構建字符串就調用 toString()方法。
    StringBuilder builder = new StringBuilder();
    builder.append(ch);
    String completedString = Builder.toString();
  20. 輸入輸出:要通過 console控制檯進行輸入,首先要構建一個 Scanner 對象,並與標準輸入流 (System.in) 關聯。
    Scanner in = new Scanner(System.in);
    nextLine() 方法將輸入一行,因爲在輸入行中可能有空白格們要想讀取一個單詞(以空白爲分隔符),就要使用 next() 方法。
    String firstName = in.next();
    可以使用靜態的 String.format()方法創建一個格式化的字符串。
    String message = String.format("Hello, %s!", name);
    printf()中日期和時間的格式化選項,以 t 開始,以日期與時間轉換符的任意字母結尾。同時,可使用一個格式化的字符串支出要被格式化的參數索引(從1開始),索引必須緊跟在 % 後,並以 $ 結束。同樣可以使用 < 指示前面格式說明中的參數將被再次使用。
    printf("%tc", new Date()); #c表示完整的年月日
    printf("%1$tB, %2$te, %3$tY", new Date()) #這行代碼有誤,僅作爲索引的介紹。
  21. 文件的輸入與輸出:要相對文件記性讀取,就要用一個 File 對象構造一個 Scanner 對象
    Scanner in = new Scanner(Paths.get("myFile.txt"));
    要寫入文件,就要構造一個 PrintWriter 對象,只需要提供文件名。如果文件不存在,則創建該文件。
    PrintWriter out = new Printwriter("myFile.txt");
  22. 不能在嵌套的兩個塊(block)中聲明同名的變量。
  23. Java提供了一種帶標籤的 break 語句,用於跳出多重循環,標籤必須放在希望跳出的多層循環之前,並且緊跟一個冒號。智能跳出語句塊而不能跳進語句塊。
    read_data;
    while(...){
    for(...){
    if(...)
    break read_data;
    }
    }
  24. 大數值:BigIntegerBigDecimal 兩個類處理包含任意長度數字序列的數值。使用靜態的 valueOf()方法可以將普通的數值轉換成大數值。
    BigInteger a = BigInteger.valueOf(100);
    不能使用算術運算符,而要使用大數類的add(), subtract(), multiply(), divide(), mod() 方法。其中使用 BigDecimal 類的 divide() 方法時必須給出四捨五入的方式(rounding mode)。
  25. 數組:聲明數組, 指出數組類型(數據元素類型緊跟[])和數組變量的名字
    int[] a;
    使用 new 運算符創建一個數組, 數組長度不要求是常量。允許數組長度爲 0,長度爲0和 null 是不同的。
    int[] a = new int[100];
    使用列表初始化數組的使用不需要調用 new
    int[] a = {1, 2, 3, 4};
    甚至可以初始化匿名數組, 在不創建新變量的情況下重新初始化一個數組。
    a = new int[] {1, 2, 3, 4};
    Java允許 數組拷貝, 兩個變量將引用同一個數組。
    int[] b = a;
  26. for each 循環:for(elememt : collection) statement
    可以一次處理數組中的每個元素而不必爲制定下標值擔心。collection 這一集合必須是一個數組,或者一個實現了 Iterable 接口的類對象。
  27. main()函數接受一個字符串數組,也就是命令行參數。
  28. Math.random() 方法將返回一個從0到1,左開右閉的隨機浮點數,用n乘以這個數就可以到的0 ~ n-1 之間的隨機數。
發佈了38 篇原創文章 · 獲贊 11 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章