Jamie Chien • 2025-03-22
Kotlin 系列(1):變數與基本型別
前言
在一些因緣際會下,我開始要接觸 Kotlin 這個語言,每次學習一個新的語言,當然就要把它整理一下,下面我將分享一下我學習這個語言所整理的筆記~ Let’s Go!
目錄
變數
在 Kotlin 中,透過 val 或 var 關鍵字來宣告一個變數
val vs var
val: 用來宣告 Immutable 的變數(類似 constant),其值在宣告後不可被改變var: 用來宣告 Mutable 的變數,其值在宣告後可以改變
// Immutable
val pi = 3.14
// Mutable
var x = "Hello World"
Kotlin 默認建議優先使用
val基本型別
Number
Integer 型別 (預設:Int)
| 型別 | Size (bits) | 最小值 | 最大值 |
|---|---|---|---|
Byte | 8 | -128 | 127 |
Short | 16 | -32768 | 32767 |
Int | 32 | -2,147,483,648 | 2,147,483,647 |
Long | 64 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
val one = 1 // Int
val threeBillion = 3000000000 // Long
val oneLong = 1L // Long
val oneByte: Byte = 1
Floating-point 型別(預設:Double)
| 型別 | Size (bits) | Significant bits | Exponent bits | Decimal digits |
|---|---|---|---|---|
Float | 32 | 24 | 8 | 6-7 |
Double | 64 | 53 | 11 | 15-16 |
val pi = 3.14 // Double
val oneDouble = 1.0 // Double
val eFloat = 2.7182818284f // Float, actual value is 2.7182817
型別轉換
toByte(): Byte(deprecated forFloatandDouble)toShort(): ShorttoInt(): InttoLong(): LongtoFloat(): FloattoDouble(): Double
在大多數情況下是不需要做以上的 Explicit conversions
Unsigned Integer Number
在宣告的數字後面加上 U 或 u, 若沒有給定特殊的型別,預設型別會根據 size 給 UInt 或 ULong
| 型別 | Size (bits) | 最小值 | 最大值 |
|---|---|---|---|
UByte | 8 | 0 | 255 |
UShort | 16 | 0 | 65535 |
UInt | 32 | 0 | 4,294,967,295 |
ULong | 64 | 0 | 18,446,744,073,709,551,615 |
val i = 1u // UInt (Default)
val l = 5000000000u // ULong (Default)
val b: UByte = 1u // UByte
val s: UShort = 1u // UShort
val ll: ULong = 1u // ULong
2025 Mar 16: Unsigned arrays and ranges 功能(包含運算)尚在 Beta 中
Boolean
可以是 true, false 或是 null
val myTrue: Boolean = true
val myFalse: Boolean = false
val boolNull: Boolean? = null
Character
使用單引號(')來表示 Char 型別(e.g. '1'),其他特殊字元使用反斜線(\)開頭來跳脫字元:
\t: tab\b: backspace\n: new line (LF)\r: carriage return (CR)\': single quotation mark\": double quotation mark\\: backslash\$: dollar sign
String
使用雙引號(")來表示 String 型別(e.g. "abc")
跳脫字元
一樣可以使用 \ 來使用跳脫字元
val s = "Hello, world!\n"
多行字串
使用 """ 來建立多行字串
val text = """
for (c in "foo")
print(c)
"""
Array
用來保存 固定數量 且 相同 type(or subtypes) 的資料結構
限制
從 Array 中新增 or 刪除元素的唯一方法是每次建立一個新的 Array
var riversArray = arrayOf("Nile", "Amazon", "Yangtze")
// Using the += assignment operation creates a new riversArray,
// copies over the original elements and adds "Mississippi"
riversArray += "Mississippi"
println(riversArray.joinToString())
// Nile, Amazon, Yangtze, Mississippi
建立 Array
val simpleArray = arrayOf(1, 2, 3)
println(simpleArray.joinToString())
// 1, 2, 3
val nullArray: Array<Int?> = arrayOfNulls(3)
println(nullArray.joinToString())
// null, null, null
var exampleArray = emptyArray<String>()
// or
var exampleArray: Array<String> = emptyArray()
Arrayconstructor
val initArray = Array<Int>(3) { 0 }
println(initArray.joinToString())
// 0, 0, 0
val asc = Array(5) { i -> (i * i).toString() }
asc.forEach { print(it) }
// 014916
Primitive-type Array
| Primitive-type Array | Equivalent in Java |
|---|---|
BooleanArray | boolean[] |
ByteArray | byte[] |
CharArray | char[] |
DoubleArray | double[] |
FloatArray | float[] |
IntArray | int[] |
LongArray | long[] |
ShortArray | short[] |