Java再入:02 - Java語言的基本成分
阿新 • • 發佈:2020-12-14
02 Java語言的基本成分
預設大家都有C語言基礎,所以一些東西只是簡單的提一下,甚至忽略
基本成分:
- 字符集
- 詞法元素
- 識別符號和關鍵字
- 運算子、限屆符和分隔符
- 字面量
- 註釋
- 資料型別
- 什麼是資料型別
- 資料型別的含義
- 預定義資料型別
- 資料型別的例項
- Java型別系統的概述
- Java的基本資料型別
- 什麼是資料型別
- 表示式
- 含義
- 計算過程中的型別轉換
- 型別相容賦值
- 自動型別轉換
- 表示式的運算順序
- 語句
- 子程式
一、資料型別
(1) 資料型別定義
- 型別名
- 取值範圍
- 操作集合
(2) 資料型別分類
- 預定義資料型別
- 基本資料型別
- 自定義資料型別
-
基本資料型別:如Java的int,cher等,設立目的
- 刻畫資料的最基本的成分
- 作為型別構造的最小元素
- 提升執行速度(為了提高整體速度,常用匯編等語言設計實現基本型別)
-
預定義資料型別包括:基本資料型別和Java的類庫
-
自定義資料型別:在複雜的應用場景下,預定義資料型別顯然不夠用,也不夠靈活,為了滿足使用者需要新的資料型別可以自定義,而出現了自定義資料型別。
(3) 資料型別的例項
計算的資料被稱為計算量,它是資料的例項。即資料型別的取值範圍的一個值。
在命令式程式設計師範型中,資料儲存於記憶體單元。計算量代表著特定的的記憶體單元,變數名代就是記憶體單元的名字,變數值就是記憶體單元的儲存的值。其中變數的取值是可以變化的,但是變數的型別是不可以變化的。
(4) Java資料型別分類
基本資料型別:
- 整型:byte,short,char,int,long
- 浮點型:float,double
引用型別:class,interface,陣列
(5) Java引用資料型別
-
堆和棧的關係,堆是給引用型別變數所指向的真實結構型別劃分空間的容器,棧是為基本型別劃分空間的容器。
-
null 比較特殊,當 Object object = null,注意已經為其分配一個棧記憶體,但是還沒有初始話堆記憶體(即,堆記憶體的真實結構沒有構造)。
-
int [] a 和 int a[] 是一個意思,但是推薦使用前一個。
-
陣列初始化:int [] a = {1, 2, 3},只有在申明的時候可以這麼寫,其它地方會報錯。
-
只有可以被正確被分配空間的宣告才有效:
int [] [] a = new int [3][]; int [] [] b = new int [][3]; //無法計算記憶體分配
-
字串: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);