iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
Mobile Development

新手向Android&Kotlin學習紀錄30天系列 第 13

第13天 Kotlin小學堂(2) : 變數、基本資料類型

  • 分享至 

  • xImage
  •  

變數是每個程式語言中都會有的基本單位。
來看看Kotlin是怎麼宣告變數的,基本的資料類型又有哪些?

關鍵字

宣告變數時,需要在變數名稱前加上關鍵字,編譯器才知道這是個什麼樣的變數:

  • val 唯讀(read-only variable),這表示只能讀取或存取變數的值。預期值不會變動時使用
  • var 可變(mutable variable),可以再次set不同的值。
  • const val 編譯時常數,在編譯階段就確定的常數,有下列限制:
    • const必須搭配val一起出現。
    • 只能在頂層(top-level)、物件(object)、伴生物件(companion object)內宣告。
    • 只能定義字串和基本資料類型。
  • 註:編譯階段早於執行階段,變數多在執行階段才確定,const val是在編譯時就確定值

建議以val為優先使用,若需要改動時再考慮改成var

基本資料類型

Kotlin Basic types

數字類

整數類型

val z = 100  //預設z是Int類型
val x = 100L //x是Long類型
//以下錯誤示範:
val a : Byte = 128 //Error,超出Byte最大值127
val b : Int = 12.2 //Error,要整數給double,不給過

浮點類型型

  • Double 雙精度浮點數
  • Float 單精度浮點數
    val a = 1.8     //預設,是Double類型
    val b = 1.8f    //1.8後加f或F,編譯器就知道 a 是 Float 類型
    val c = 10f    //有f給過,理解為10.0,或沒加f就會出錯

布林值

  • true
  • false

Character 字符

字符面值用Char單引號括起來:'a'。
支援跳脫字元:

  • \b : BackSpace
    val str = "Hello\bWorld"
    println(str) 
//結果 : HellWorld
  • \n : 換行 (LF)
    val str = "Hello\nWorld"
    println(str) 
//  結果 : Hello
//        World    
  • \t : TAB鍵
    val str = "Hello\tWorld"
    println(str) 
// 結果 : Hello    World      
  • \r : carriage return (CR)
    val str = "Hello\rWorld"
    println(str) 
//結果 : World
  • \' : 單引號
    val str = "Hello\'World"
    println(str) 
//結果 : Hello'World
  • \" : 雙引號
    val str = "Hello\"World"
    println(str) 
//結果 : Hello"World
  • \\ : 反斜杠
    val str = "Hello\\World"
    println(str) 
//結果 : Hello\World
  • \$ : 美元符號
    val str = "Hello\$World"
    println(str) 
//結果 : Hello$World

Characters

String 字串

Kotlin 中的字符串用String類型表示,字符串值是用雙引號 ( ") 括起來的Char序列。
字符串是不可變的。初始化字符串後,將無法更改其值或為其分配新值。所有轉換字符串的操作都在一個新String物件中返回它們的結果,而原始字符串保持不變:

  val str = "abc"
    println(str.uppercase()) //ABC
    println(str)             //abc

字串模板

當要列印出一段有文字又要參雜變數的字串時可以使用字串模板,使用變數的地方用${變數.method},亦可使用跳脫字元,如:

    val userName = "Gary"
    println("name : $userName\nlength of name : ${userName.length}")
    //結果 name : Gary
    //    length of name : 4

宣告變數

語法:
var 變數名 : 資料類型 = 初始值。

val number : Int = 5
val number2 : Int = "123" // 給字符串不合法

資料類型與值要相符。意思是資料類型Int,後面給的值就必須是整數。若給別的類型,IDE就會提醒出錯。

當宣告了 number 這個變數時,這個 number 就是一個物件,而且是個 Int 類型的物件,並且=的意思,是將等號右邊這個5指派給了左邊這個變數 number。
但,number並沒有實際持有這個5,而是像信箱一樣,裡面放入像地址的:參考(reference),循著這個參考就能連結到5。
而var 或 val 關鍵字,實際上是在告訴編譯器這個參考是否可變。

變數名稱應使用小駝峰取名,最好可以描述變數儲存的資料,不可使用 Kotlin關鍵字

類型推斷

這是Kotlin的特色之一,對於變數宣告的資料類型定義可以省略,編譯器會依據初始值來推斷資料類型。

val number = 5

類型檢查

使用"is"、"!is"來判斷類型。如下:

    val a: Any = 123
    println(a is String)    // false
    println(a is Int)       // true
    println(a !is String)   // a不是字符串,true
    println(!(a is String)) // true,跟上句是一樣意思
val x: Any = 123
    when (x) {
        is Int -> print(x + 1)
        is String -> print(x.length + 1)
        is IntArray -> print(x.sum())
    }
    //結果 : 124

類型轉換

由上敘述可知,宣告變數時定義的資料型態與賦值類型必須相符,否則無法運作
那是否可以轉換值的資料型態,存入不同資料型態的變數?
有喔,利用轉換函式,加在變數或值後面就可了:

  • toByte()
  • toShort()
  • toInt()
  • toLong()
  • toDouble()
    val a = "123"
    val b : Int = a.toInt()          //123
    val c : Int = "123".toInt()      //123
    val d :String = 321.toString()   //321 
    println("$a\n$b\n$c\n$d")
    
    錯誤:
   val e : Int = "gary".toInt() // 會出現數字格式異常(NumberFormatException)的錯誤

可以去android codelab了解更多變數的應用 :
在 Kotlin 中建立和使用變數
今天先降,掰~


上一篇
第12天 Kotlin 小學堂(1) : Hello World!
下一篇
第14天 Kotlin小學堂(3) : 那些運算子
系列文
新手向Android&Kotlin學習紀錄30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言