Java核心技術卷一(一、二、三章讀書筆記)

Chapter 1

  1. Java中int大小永遠爲32位。數據類型具有固定的大小。字符串都是用標準的Unicode格式存儲的。
  2. 在網頁中運行的Java程序成爲applet,要使用applet,需要啓用Java的Web瀏覽器執行字節碼
  3. 創始人詹姆斯·高斯林,與1996年發佈Java1.0版本,Sun公司於2009年被Oracle公司收購

Chapter 2

  1. JDK工具包的1.2~1.4版本被稱爲Java SDK,還有一個JRE,它包含Java運行時環境,包含虛擬機但不包換編譯器。
  2. Java SE(java標準版)、JavaEE(企業版Java)、JavaME(MicroEdition用於手機和其他小型設備的Java平臺)
  3. 我們使用的和需要的是JDK(Java SE開發包),而不是JRE
  4. 使用命令行

Chapter 3

  1. 一個簡單的Java程序

    public class FirstSample {
        public static void main(String[] args) {
            System.out.println("We will not use 'HelloWorld'");
        }
    } 
    
    1. 關鍵字public成爲訪問修飾符,用於控制程序的其他部分對這段代碼的訪問級別。
    2. 關鍵字class表明Java程序中的全部內容都包含在類中。類是構建所有Java應用程序的構建塊
    3. 命名規範
    4. 當使用javac運行已編譯的class字節碼文件時,Java虛擬機將從指定類的main方法開始執行。
  2. main方法必需爲public的,不過,有些版本的Java解釋器也能夠執行Java應用程序,bug號碼4252539.Java SE1.4版本以後網址main方法是public的

  3. Java中任何方法的代碼都用“{”開始,“}”結束。空白符會被Java編譯器忽略。

  4. 回車不是一條Java語句的結束,所有如果需要,可以把一條語句寫在多行上。

  5. 點號(·)用於調用方法。Java使用的通用語法是object.method(parameters),等價於函數調用

  6. 註釋: //、/* /、/* */

  7. Java是一種強類型語言,這就意味着必需爲每一個變量聲明一種類型。

  8. Java有八種基本數據類型:4中整型,2中浮點型,1種Unicode字符型,1中布爾型。Java 中一個表示任意精度的包:big number,不是一種新類型,而是一個Java對象。

    1. 整型int、short、long、byte

      類型 存儲需求 取值範圍
      int 4字節 約爲-21億~+21億,可以表示42億個數字
      short 2字節 -32768 ~ +32767
      long 8字節 -9223372036854775808~+9223372036854775807基本可以表示可以用到的所有數字
      byte 1字節 -128 ~ +127
    2. int類型最常用,byte和short主要用於特定的應用場合

    3. 長整型數值後有一個L或者l(40000L),十六進制前綴0x(0xCAFE),八進制前綴0,容易混淆,所以最好不要用八進制常數

    4. 注意,Java中沒有任何無符號(unsigned)形式的int、long、short或byte類型

    5. Java有兩種浮點類型

      類型 存儲需求 取值範圍
      float 4字節 有效位數(6~7位)
      double 8字節 有效位數15位

      double的精度是float的兩倍,也稱,雙精度浮點數。絕大多數的應用程序都使用double類型,事實上,只有很少情況下才會使用float類型

    6. float數值後綴f(3.141936f),沒有後綴默認double,也可以在浮點數後面賈D或者d,表示double

    7. 可以用十六進制表示浮點數,例如0.125 = 2^-3,可以表示位0x1.0p-3,注意使用p表示指數,位數採用十六進制,指數拆用十進制,指數的技術是2,而不是10

    8. 浮點數計算遵循IEEE 74規範,三個特殊的浮點數值:正無窮大、負無窮大、NaN()不是數字。例如,一個正整數初一0的結構位正無窮大。計算0/0或者負數的平方根結果位NaN。

    9. 不能用Double.NaN來判斷一個數是否等於Double.NaN,例如x == Double.NaN永遠返回false。但是可以用Double.isNaN()來判斷一個值是否是NaN

    10. 浮點數不適用於無法結束攝入誤差的精確計算中,例如2.0-1.1輸入0.89999999,而不是0.9,這是由於計算機李的數是由二進制保存的

  9. Char類型
    用以表示有些Unicode字符,’\u0000’ ~ ‘\uffff’.例如public static void main(String\u005B\u005D args) 是合法的

    轉義序列 名稱 Unicode值
    \b 退格 \u0008
    \t 製表符 \u0009
    \n 換行符 \u000a
    \r 回車 \u000d
    \" 雙引號 \u0022
    \’ 單引號 \u0027
    \\ 反斜槓 \u005c

    在這種情況下 “\u0022+\u0022” 這個字符串會在解析之前被轉換爲""+"",也就是空串

  10. Unicode和char類型
    Java中,char類型描述了UTF-16編碼的一個代碼單元。強烈建議不要在程序中使用char類型,除非確實需要處理UTF-16的代碼單元,最好將字符串作爲抽象數據類型處理。

  11. boolean類型。用來判定邏輯條件。整型值和布爾值之間不能進行相互轉化

  12. 在Java中,每個變量都有一個類型,變量的類型位於變量名之前。

  13. 變量名的所有字符都是有意義的,並且大小寫敏感,長度上基本沒有限制
    如果想知道那些Unicode字符屬於Java中的“字母”,可以使用Character類的isJvaIdentifierStart和isJavaIdentifierPart檢查.

  14. 變量初始化:
    聲明一個變量和,必需顯式的用賦值語句對比變量進行初始化。

  15. Java中,利用關鍵字final指示常量。例如final double CM_PER_INCH = 2.54
    Java中,希望一個變量在一個類中多個方法中國使用,通常用關鍵字static final設置一個類變量。例如:public static final double CM_PER_INCH = 2.54

  16. 運算符:當參與/運算的兩個操作數都是證書時,表示證書出發,否則,表示浮點除法。(15/7 = 2、15.0/2 = 7.5)注意:整數除0,將會得到一個異常,二浮點數除0會得到無窮大或NAN的結果。
    strictfp關鍵字標記:必需用嚴格的浮點計算來生成可再生的結果。

    1. 在Math類中,包含類各種個樣的數學函數。

    2. ==import static java.lang.StrictMath.floorMod;==加入這行代碼後,不用寫Math前綴。

    3. 類型轉換 double > float > long > int

    4. 強制類型轉換(cast)

    5. Math.round()返回的是long類型,需要強制類型轉換成int

    6. 結合賦值和運算符。會發生強制類型轉換。例如x=4;x+=3.5;----->x=7

    7. 自增和自減運算符

    8. 關係和boolean運算符

    9. 位運算符 &(and)、|(or)、^(xor)、~(not)。&、|也可以用於布爾值運算,不採用短路的方式運算

    10. 括號和運算符級別

      運算符 等價於
      a && b
      a += b == c a += (b += c)
    11. 枚舉類型

      enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE}
      Size類型只能存儲這個類型聲明的某個值和null

  17. 字符串

    1. Java的字符串就是Unicode字符序列。

    2. substring()可以從一個較大的字符串中提取一個子串

      String greeting = “Hello”;

      String s = greeting.substring(0, 3); --------> “Hel”

    3. 拼接:允許使用“+”拼接字符串

    4. join():字符串拼接,用指定字符串分割

    5. 不可變字符串:String類對象爲不可變字符串。字符串共享

    6. Java的字符串不是字符數組

    7. 檢查字符串是否相等:equals()equalsIgnoreCase()**一定不要用判斷字符串是否相等**==

    8. 空串與Null串!!!空串不等於Null串

    9. 碼點與代碼單元(codePointCount()獲取碼點數量)。

      str.codePoints().toArray()獲取字符數組

      CharSequence接口,所有字符串都屬於這個接口

  18. StringBuilder:需要用很短的字符連接成字符串時,效率很高

    用append方法添加內容

    用toString獲取String類型對象

    這個類的前身是StringBuffer,效率稍低,但是是線程安全的

  19. 輸入輸出

    Scanner in = new Scanner(System.in);

    從控制檯讀取密碼:

    Console cons = System.console();
    String username = cons.readLine("User name:");
    char [] passwd = cons.readPassword("Password:");
    
  20. 格式化輸出

    System.out.printf()

    格式化後字符串:

    String message = String.format(“Hello, %s. Next year, you’ll be %d”, name, age);

    參數索引P60

    System.out.printf("%1ss %2tB %2te, %2$tY", “Due date:”, new Date());

  21. 文件輸入輸出(略)

  22. 控制流程

    • Java沒有goto語句(goto雖然是保留字),但是break可以帶標籤。還有增強型for循環
    • if語句
    • while循環
    • do-while循環
    • switch語句可以判斷字符串(從Java7開始)
    • Java提供一種帶標籤的break語句,用於跳出多層潛逃循環,標籤必需放在希望跳出的最外層循環之前,並且必需緊跟一個冒號
      read_data:
      while(...) {
          while(...) {
              break read_data;
          }
      }
      ...S
      //這段代碼如果break後,是從S開始執行,read_data是while循環的標籤
      
  23. 大數值(BigInteger/BigDecimal)

    • Java沒有運算符重載,大數值不能用算數運算符
  24. 數組

    • 創建一個數字數組時,數組中所有原始都被初始化爲0。boolean數組全初始化爲false,對象數組初始化爲null

    • 數組長度array.length

    • 一旦創建了數組,就不能該表它的大小。

    • for_each - 增強型for循環( 必需是一個數組或者實現了iteartor接口的對象)

    • Java中,所有變量都是引用

    • Java的new -------> 在堆上分配內存

    • 命令行參數:每一個Java程序都帶有一個String arg[]參數的main方法。這個參數表明main方法接受一個字符串數組

      java Test -g world
      那麼args[0] = "-g" args[1] = "world"
      
    • 數組排序

      Arrays.sort() : 使用優化的快速排序方法
      Java.util.Arrays 包含數組的工具類 包含sort(), binarySearch(), fill(), equals()

    • 多維數組

      for_each需要兩層循環

    • 不規則數組

      每個一維數組有不同的長度,因爲一維數組中的每一個元素相當於一個引用
      double[][] a = new double[10][6]
      相當於
      分配了10個指針的數組,每個指針指向一個包含6個數字的數組
      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章