Jamie Chien

Jamie Chien • 2025-03-22

Kotlin 系列(1):變數與基本型別

範例

前言

在一些因緣際會下,我開始要接觸 Kotlin 這個語言,每次學習一個新的語言,當然就要把它整理一下,下面我將分享一下我學習這個語言所整理的筆記~ Let’s Go!

目錄

變數

在 Kotlin 中,透過 valvar 關鍵字來宣告一個變數

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)最小值最大值
Byte8-128127
Short16-3276832767
Int32-2,147,483,6482,147,483,647
Long64-9,223,372,036,854,775,8089,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 bitsExponent bitsDecimal digits
Float322486-7
Double64531115-16
val pi = 3.14 // Double
val oneDouble = 1.0 // Double
val eFloat = 2.7182818284f  // Float, actual value is 2.7182817

型別轉換

  • toByte(): Byte (deprecated for Float and Double)
  • toShort(): Short
  • toInt(): Int
  • toLong(): Long
  • toFloat(): Float
  • toDouble(): Double
在大多數情況下是不需要做以上的 Explicit conversions

Unsigned Integer Number

在宣告的數字後面加上 Uu, 若沒有給定特殊的型別,預設型別會根據 size 給 UIntULong

型別Size (bits)最小值最大值
UByte80255
UShort16065535
UInt3204,294,967,295
ULong64018,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

  1. arrayOf()
val simpleArray = arrayOf(1, 2, 3)
println(simpleArray.joinToString())
// 1, 2, 3
  1. arrayOfNulls()
val nullArray: Array<Int?> = arrayOfNulls(3)
println(nullArray.joinToString())
// null, null, null
  1. emptyArray()
var exampleArray = emptyArray<String>()
// or
var exampleArray: Array<String> = emptyArray()
  1. Array constructor
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 ArrayEquivalent in Java
BooleanArrayboolean[]
ByteArraybyte[]
CharArraychar[]
DoubleArraydouble[]
FloatArrayfloat[]
IntArrayint[]
LongArraylong[]
ShortArrayshort[]

Reference