為什麼 Python 的 Range 要設計成左開右閉區間?
基本資料型別是CPU可以直接進行運算的型別。
Java定義了以下幾種基本資料型別:
- 整數型別:byte,short,int,long
- 浮點數型別:float,double
- 字元型別:char
- 布林型別:boolean
Java定義的這些基本資料型別有什麼區別呢?要了解這些區別,我們就必須簡單瞭解一下計算機記憶體的基本結構。
計算機記憶體的最小儲存單元是位元組(byte),一個位元組就是一個8位二進位制數,即8個bit。它的二進位制表示範圍從00000000~11111111
,換算成十進位制是0~255,換算成十六進位制是00~ff
。
記憶體單元從0開始編號,稱為記憶體地址。每個記憶體單元可以看作一間房間,記憶體地址就是門牌號。
一個位元組是1byte,1024位元組是1K,1024K是1M,1024M是1G,1024G是1T。
整型
特別注意:同一個數的不同進位制的表示是完全相同的,例如15
=0xf
=0b1111
。
浮點型
浮點型別的數就是小數,因為小數用科學計數法表示的時候,小數點是可以“浮動”的,如1234.5可以表示成12.345x102,也可以表示成1.2345x103,所以稱為浮點數。
布林型別
字元型別
字元型別char表示一個字元。Java的char型別除了可表示標準的ASCII外,還可以表示一個Unicode字元:
注意char型別使用單引號',且僅有一個字元,要和雙引號"的字串型別區分開。
引用型別
常量
var關鍵字
小結
Java提供了兩種變數型別:基本型別和引用型別
基本型別包括整型,浮點型,布林型,字元型。
變數可重新賦值,等號是賦值語句,不是數學意義的等號。
常量在初始化後不可重新賦值,使用常量便於理解程式意圖。
字串陣列
如果陣列元素不是基本型別,而是一個引用型別,那麼,修改陣列元素會有哪些不同?
字串是引用型別,因此我們先定義一個字串陣列:
對於String[]型別的陣列變數names,它實際上包含3個元素,但每個元素都指向某個字串物件:
對names[1]進行賦值,例如names[1] = "cat";,效果如下:
這裡注意到原來names[1]指向的字串"XYZ"並沒有改變,僅僅是將names[1]的引用從指向"XYZ"改成了指向"cat",其結果是字串"XYZ"再也無法通過names[1]訪問到了。