大家好,歡迎加入小李君的Kotlin學習之旅。今天是小李君學習Kotlin的第四天。
來段學習小結
經過前三天的getting started式的快速學習,小李君從無到有地認識Kotlin是個什么東西(JVM語言),能干什么(通吃Android,SpringBoot,Javascript,IOS),掌握基本語法糖(能寫變量常量if-else-when判斷for-while循環fun函數class類array數組)。也就是說,小李君目前已經大概看懂80%的kotlin代碼了,還有最后20%需要通過研習官方文檔各個專題來深度學習(不是deep learning)。
插播人生套路
學習新語言必經這幾個過程:
- getting started,快速入門,快速熟悉掌握新語言環境,做到能看懂,也能在別人的代碼上改改。
- reference,參考手冊,深入每個專題,反復看反復練,把基礎打牢固,同時能獨立完成一個功能完整的應用程序,無論是后端應用還是移動客戶端應用。
- library source code,語言本身的內核源代碼,了解語言環境本身能提供什么工具給開發者使用,全面認識語言內核源代碼的組織架構(包的結構劃分,類的組織方式,方法的設計規律)。
- compile environment,(暫時不說了,這是連小李君都還沒達到的高度,跪求大神帶著飛)。
- 寫寫學習總結,忘記這門語言。
開始進入正題
Kotlin的基本類型與Java & Javascript差不多,同時也借鑒了其他語言的優點,大概能夠劃分為:Number,Character,Boolean,Array,String。
Number - 數字類型
Number作為一個概念代表所有數字的表示(概念上like javascript),但在具體類型實現中,非常接近Java的類型。
Type | Bit width | Range |
---|---|---|
Double | 64 | 2^64 |
Float | 32 | 2^32 |
Long | 64 | 2^64 |
Int | 32 | 2^32 |
Short | 16 | 2^16 |
Byte | 8 | 2^8 == 256 |
值得一提的是Kotlin支持Java7的一個重要特性:數字下劃線分割。
- 299312 == 299_312
關于Number的其他內容,其實也沒啥特別,就是===這個很直;Long是Long,Int是Int,一點也不含糊。
Character - 字符類型
字符也沒啥內容,就是跟===一樣很直,Character是Character,Int是Int,兩者不能自動轉換,也不相等。以后用到字符類型的機會其實還蠻少的。
Boolean 布爾類型
true false,沒了。
Array 數組類型
Kotlin的數組類型可謂取其精華去其糟粕。
全局函數 arrayof( 5, 6, 7 ) 創建了一個數組[ 5, 6, 7 ];
工廠方法 Array( 3, { i -> i + i } ) 創建了一個數組 [ 0, 2, 4 ];
拋棄了 Int [ ] 這些寫法,直接用 Array<Int> 或 IntArray;
訪問數組元素還是可以直接 arr [ 0 ] 這樣子。
String 字符串
字符串的亮點在于 """ 這三個雙引號和模板技術。
其中,三個雙引號來自于Python語言特性,能夠多行顯示字符串,直接編寫轉義字符,并且還能保留換行格式。
還有,模板技術來自于Linux Bash Shell語言特性,參數展開和表達式展開,老司機都懂的。