Kotlin基礎之區間和型別轉換
阿新 • • 發佈:2018-11-19
fun main(args: Array<String>) { // 1.區間可以使用.. 表示, 注意..在使用的時候要保證起始值要小於結束值 // 輸出1 2 3 4 for (i in 1..4) { println(i) } // 沒有輸出, 因為起始值大於結束值了 for (i in 4..1) { println(i) } println("=============") // 同樣適用於char型別 for (i in 'a'..'d') { println(i) } for (i in 'd'..'a') { println(i) } println("=============") // 2.如果想要從大到小, 可以使用downTo for (i in 4 downTo 1) { println(i) } // 3.如果想要一個從1到10但不包含10的區間, 可以使用until關鍵字 // 列印 1 2 3 4 5 6 7 8 9 for (i in 1 until 10) { println(i) } // 4.使用step關鍵字 可以指定步長 // 輸出1 3 5 7 9 for (i in 1..10 step 2) { print(i) print(" ") } println() // 可以定義一個區間變數 var range = 1..10 // range同樣含有很多可用的屬性 var first = range.first var last = range.last var start = range.start var step = range.step println("first : " + first) println("last : " + last) println("start : " + start) println("step : " + step) println("是否包含2, ${range.contains(2)}") }
上述程式碼的執行情況如下:
1
2
3
4
=============
a
b
c
d
=============
4
3
2
1
1
2
3
4
5
6
7
8
9
1 3 5 7 9
first : 1
last : 10
start : 1
step : 1
是否包含2, true
主要就是對: .. , downTo, until以及區間的一些屬性做了簡單的測試和解讀
關於Kotlin的型別轉換, 舉個簡單的例子:
/** * Any就表示能接收任意型別的引數 * Any是任何Kotlin類的父類 * Int? 表示返回結果為Int型, 也可為null, 如果不加? 則不能返回null * The root of the Kotlin class hierarchy. Every Kotlin class has [Any] as a superclass. */ fun getStringLength(obj: Any): Int? { if (obj is String) { // 這裡實際已經被轉化成了String型別, 可以直接使用String的length屬性 println(obj.javaClass) println(obj.substring(1)) return obj.length } println(obj.javaClass) return null } fun getStringLength2(obj: Any): Int? { if (obj !is String) { println(obj.javaClass) return null } // 這裡實際已經被轉化成了String型別, 可以直接使用String的length屬性以及其他的屬性如substring println(obj.javaClass) println(obj.substring(1)) return obj.length } fun getStringLength3(obj: Any): Int? { // 也可以直接在 && 右邊就把obj當作String來進行操作 if (obj is String && obj.length > 0) { return obj.length } return null } fun main(args: Array<String>) { println(getStringLength("1111111")) println(getStringLength(123)) println(getStringLength('a')) println(getStringLength2("1234567")) println(getStringLength3("890")) }
對應的輸出結果為:
class java.lang.String
111111
7
class java.lang.Integer
null
class java.lang.Character
null
class java.lang.String
234567
7
3
Ktolin的自動型別轉換實際就是如果使用is 關鍵字做了判斷, 那麼在對應的邏輯分支中該變數就會自動轉化成對應的資料型別, 也就是可以直接把該變數當作對應的型別進行操作, 不需要再顯示的轉換型別