Kotlin學習筆記(1)-變數、常數與類型

第二期Kotlin讀書會

Andy Lu
4 min readJul 29, 2020

定義變數

範例:定義一個變數名稱為name的String,並將”Andy”設為初始值。

var name : String = "Andy"

由上方的範例中,可以分為幾個部分:

  1. var:變數定義關鍵字
  2. name:變數名稱
  3. String:類型定義
  4. =:設定運算子
  5. “Andy”:設定值

變數定義關鍵字

在Kotlin中,變數定義關鍵字有兩個,一個是var,另一個則是val。那麼這兩種關鍵字有什麼差別呢?

簡單分辨,var用來設定可以被修改的變數,val用來設定不可以被修改的變數。

不過,在某些時候,val的值也是可以被修改的。如果要使用絕對不會被修改的數值,就必須使用編譯時期的常數

編譯時期的常數

例:

const val MAX_VALUE = 100

有幾點需要注意:

  1. 定義在函式之外,包含main()函式。因為邊編譯時期的常數需要在編譯的時候派值,但是main()及其他函式是在執行時才呼叫,函式內的變數也是在那時候才派值。
  2. 只能使用基本類型:String
  • Int
  • Double
  • Float
  • Long
  • Short
  • Byte
  • Char
  • Boolean

3. 一般使用全大寫+底線命名。

變數名稱

任意命名,一般都是以小駝峰命名法(lower camel case)。(首字母小寫,第二個單字以後的開頭字母用大寫,不使用底線分隔)

例如:

  • isValid
  • numberOfMonth
  • firstName

類型定義

在Kotlin中,可以分為下列幾種基本資料類型,

  • Number: Byte, Short, Int, Long, Float, Double
  • Boolean
  • String
  • Char
  • List
  • Set
  • Map

在Java中,資料類型有兩種:參照類型基礎類型,參照類型有對應的原始碼定義;基礎類型則不需要原始碼定義。
參照定義的名稱都是以開頭大寫。至於為什麼在Java需要使用參照類型與基礎類型呢?因為某些Java的語言特色只能使用參照類型,另外,參照類型更利於支援Java某些物件導向的特色。基礎類型的優點在於效能比較好。

回到Kotlin,上面列出的基本資料類型全部都是 參照類型
那麼為什麼Kotlin只有提供參照類型呢?

  1. 只有一種才不會選錯XD
  2. 基於更高效能的需要,Kotlin編譯器會在Java位元碼中,改用基礎資料型態。

類型推斷與靜態類型系統

  • 類型推斷
// Java
String name = "Andy";
//Kotlin
var name : String = "Andy"
//Kotlin 類型推斷
var name = "Andy"

學過Java的人會覺得Kotlin類型寫在後面怪怪的,因為Kotlin有類型推斷的功能,在定義變數的同時,如果直接加上初始值,那麼Kotlin就會知道該變數是什麼類型,甚至連IDE都會請你把類型移掉。

  • 靜態類型系統

在定義變數的同時,如果有加上類型,當設定的值不符合其類型,就會立刻提醒碼農們,我們就可以在編譯程式之前就發現問題。

例:

小結

一般情況之下,如果不需要修改變數,則一律使用 val 來定義變數。

在Kotlin中,如果有定義初始值,則不一定需要同時定義型別,但是如果有定義型別,Kotlin會在您輸入的同時檢查您的輸入是否與定義型別相同(靜態類型系統)。

Kotlin都是使用參照類型,由Kotlin編譯器決定轉成Java位元碼之後,需要使用什麼類型。

感謝大家收看,謝謝

參考

Kotlin權威2.0:Android 專家養成術

KotlinLang.org: Basic Types

讀書會連結:https://tw.kotlin.tips/study-jams/2

--

--

Andy Lu
Andy Lu

Written by Andy Lu

Android/Flutter developer, Kotlin Expert, like to learn and share.

No responses yet