前言
val :聲明是個只可讀的變量,相當於
Java
中的final
的變量。
var :聲明是個可變的變量,可更改為另一個值的變量
一、 Kotlin 數據類型
在 Kotlin
中所有的類型皆是對象
類型如下:
類型名稱 | Bit | 數據範圍 |
---|---|---|
Boolean | 1 | 只有 false or true |
Byte | 8 | -128~127 |
Char | 16 | Unicode碼,用單引號賦值 |
Short | 16 | (-215) ~ (215-1) |
Int | 32 | (-231) ~ (231-1) |
Long | 64 | (-263) ~ (263-1) |
Float | 32 | 3.4e-45~1.4e38 |
Double | 64 | 4.9e-324~1.8e308 |
示例 :
EX : 數字168
- 二進制 :10101000
- 十進制 :168
- 十六進制 :A8
- Long 數字後方要加上大寫 L :168L
- Float 數字後方要加上大寫 F :168F
P.S. 若在使用 Int 或 Long 時,寫一長串數字通常不好辨認,可在數字中添加
_
方便辨認,如:100_000。
Kotlin 的字符串提供很好的模板特性,方便字符串拼接及操作…等。
val str : String = "Hello"
val myName : String = "Ed"
val welcomeText = "$str $myName." //將會顯示 Hello Ed.
val curYear = 2018
val torromYear = "${curYear + 1 }" // 將會顯示 2019
二、控制流
基本上與
Java
中常用的相同,有for
,while
,但switch
在Kotlin
中變為when
- For 循環
使用 in
關鍵字來進行遍歷
for (value in 1..10) {
print("\t$value")
}
/*將顯示 1 2 3 4 5 6 7 8 9 10 */
遍歷過程若有需要步長使用 step
關鍵字
for (value in 1..10 step 2) {
print("\t$value")
}
/*將顯示 1 3 5 7 9 */
需要倒敘的話使用 downTo
關鍵字
for (value in 10 downTo 1) {
print("\t$value")
}
/*將顯示 10 9 8 7 6 5 4 3 2 1*/
而 until
關鍵字是表示不包括末尾元素的值範圍
for (value in 1 until 10) {
print("\t$value")
}
/*將顯示 1 2 3 4 5 6 7 8 9*/
- While 循環
var value = 0
while (value++ < 10) {
print("\t$value")
}
/*將顯示 1 2 3 4 5 6 7 8 9 10 */
- do … while 循環
do {
print("\t${++value}")
} while (value < 10)
/*將顯示 1 2 3 4 5 6 7 8 9 10 */
小結一下:
for
:適用於已知循環次數而使用
while
:適用於未知循環次數而使用
do ... while
:適用於會先執行循環內方法一次,再去判斷是否繼續進行循環
- If 表達式
Kotlin
中的if
是表達式,而Java
是語句式
簡單的理解就是表達式可以有回傳值,而語句式是沒有回傳值!
val maxAge = 65 // 老年退休年紀
var curAge = 23 // 當前年紀
var showToast = ""
println("當前年紀:$curAge 歲 ,退休年紀:$maxAge 歲") // 1
// 一般作法
if (curAge < maxAge)
showToast = "繼續努力工作!"
println(showToast) // 2
if (curAge < maxAge) {
showToast = "繼續努力工作!"
} else {
showToast = "老了就該好好享受!"
}
// Kotlin 中 if 是表達式,也就是可以有回傳值的
showToast =
if (curAge < maxAge){
println("是要問我幾次!!") // 3
"繼續努力工作!"
}
else
"老了就該好好享受!"
println(showToast) // 4
/*將顯示
當前年紀:23 歲 ,退休年紀:65 歲
繼續努力工作!
是要問我幾次!!
繼續努力工作!*/
- When 表達式
var math: Int = 85
val level = when (math) {
in 0..59 -> 'E'
in 60..69 -> 'D'
in 70..79 -> 'C'
in 80..89 -> 'B'
in 90..100 -> 'A'
else -> {
throw IllegalArgumentException() // 若 math 不屬於 0 .. 100 區間則拋出一個非法錯誤
}
println("數學 $math 分對應級別是 : $level")
/*將顯示 數學 85 分對應級別是 : B */