1. 程式人生 > 其它 >Java再入:02 - Java語言的基本成分

Java再入:02 - Java語言的基本成分

技術標籤:Java再入java

02 Java語言的基本成分

預設大家都有C語言基礎,所以一些東西只是簡單的提一下,甚至忽略

基本成分:

  • 字符集
  • 詞法元素
    • 識別符號和關鍵字
    • 運算子、限屆符和分隔符
    • 字面量
    • 註釋
  • 資料型別
    • 什麼是資料型別
      • 資料型別的含義
      • 預定義資料型別
    • 資料型別的例項
    • Java型別系統的概述
    • Java的基本資料型別
  • 表示式
    • 含義
    • 計算過程中的型別轉換
      • 型別相容賦值
      • 自動型別轉換
    • 表示式的運算順序
  • 語句
  • 子程式

一、資料型別

(1) 資料型別定義

  • 型別名
  • 取值範圍
  • 操作集合

(2) 資料型別分類

  • 預定義資料型別
  • 基本資料型別
  • 自定義資料型別
  1. 基本資料型別:如Java的int,cher等,設立目的

    • 刻畫資料的最基本的成分
    • 作為型別構造的最小元素
    • 提升執行速度(為了提高整體速度,常用匯編等語言設計實現基本型別)
  2. 預定義資料型別包括:基本資料型別和Java的類庫

  3. 自定義資料型別:在複雜的應用場景下,預定義資料型別顯然不夠用,也不夠靈活,為了滿足使用者需要新的資料型別可以自定義,而出現了自定義資料型別。

(3) 資料型別的例項

計算的資料被稱為計算量,它是資料的例項。即資料型別的取值範圍的一個值。
在命令式程式設計師範型中,資料儲存於記憶體單元。計算量代表著特定的的記憶體單元,變數名代就是記憶體單元的名字,變數值就是記憶體單元的儲存的值。其中變數的取值是可以變化的,但是變數的型別是不可以變化的。

(4) Java資料型別分類

基本資料型別:

  • 整型:byte,short,char,int,long
  • 浮點型:float,double

引用型別:class,interface,陣列

(5) Java引用資料型別

  1. 堆和棧的關係,堆是給引用型別變數所指向的真實結構型別劃分空間的容器,棧是為基本型別劃分空間的容器。

  2. null 比較特殊,當 Object object = null,注意已經為其分配一個棧記憶體,但是還沒有初始話堆記憶體(即,堆記憶體的真實結構沒有構造)。

  3. int [] a 和 int a[] 是一個意思,但是推薦使用前一個。

  4. 陣列初始化:int [] a = {1, 2, 3},只有在申明的時候可以這麼寫,其它地方會報錯。

  5. 只有可以被正確被分配空間的宣告才有效:

    int [] [] a = new int [3][];
    int [] [] b = new int [][3]; //無法計算記憶體分配
    
  6. 字串:Java中,它可以直接看作物件。String是極其使用頻繁的引用型別,且極其造成記憶體洩漏,Java專門設定一個字串常量池,用於儲存(這個池,也是在堆記憶體中)

    String str1 = 'zix'; //查詢Java字串常量池,如果有,則將其地址賦值給str1;如果沒有,在常量池中建一個 'zix' String 物件,返回其地址
    String str2 = 'zix'; // str1 == str2 => true
    String str3 = new String('zix') // 在堆記憶體建立一個String 型別結構物件,返回其地址給str3
    // str3 == str2 => false
    

(3) 表示式

自動型別轉換:

  • if 和 while 的條件判斷,都必須確保其內表示式的最終結構為boolean型別
    if(2) { // 編譯無法通過
        System.print.out('zix')
    }
    
  • 對byte、short型變數,不管是否存在其他型別,都將自動提升為int型
  • 對其它型別,則轉換與其他型別最接近的高寬度型別
  • byte、short、cahr ==> int ==> long ==> float ==> double

強制型別轉換:
(型別) + 表示式

char c = (char)('a' + 1);