包
定義和引入Java一樣,在文件開頭, 行結(jié)束不需要” ; “
1
2
3
|
package com.test.hello import android.os.Bundle |
變量
只讀變量,val 開頭,初始化后不能再賦值,相當(dāng)于Java的 final 變量
1
2
3
4
|
val a: Int = 1 val b = 1 //類型自動推斷為Int val c: Int //沒有初始化時必須指定類型 c = 1 //初始化 |
可變變量, var 關(guān)鍵字開頭
1
2
|
var x = 10 x = 3 |
函數(shù)
函數(shù)定義 fun 開頭, 完整的定義如下:
1
2
3
|
fun sum(a: Int, b: Int): Int { return a + b } |
可以簡化成表達(dá)式,返回值自動推斷
1
|
fun sum(a: Int, b: Int) = a + b |
函數(shù)沒有返回值時,可以不寫或者返回 Unit
1
2
3
|
fun test(arg: String) { println(arg) } |
或者
1
2
3
|
fun test(arg: String): Unit { println(arg) } |
注釋
和Java一樣,支持行注釋 " // " 和 塊注釋 "/ /"。
不同之處,Kotlin支持塊注釋嵌套,建議不用。
if else
使用條件語句, 和Java一樣
1
2
3
4
5
6
7
|
fun min(a: Int, b: Int): Int { if (a > b) { return b } else { return a } } |
Kotlin支持if 表達(dá)式,以上代碼可以寫成: fun min(a: Int, b: Int) = if (a > b) b else a
1
2
3
4
5
6
|
for fun main(args: Array<String>) { for (arg in args) { println(arg) } } |
或者
1
2
3
|
for (i in args.indices) { println(args[i]) } |
while
和Java類似
1
2
3
4
5
6
|
fun main(args: Array<String>) { var i = 0 while (i < args.size) { println(args[i++]) } } |
when
when,支持豐富的功能, 比Java的 switch 自由
1
2
3
4
5
6
7
|
fun case (a: Int) { when (a) { 1 -> println( "1" ) 2 -> println( "2" ) else -> println( "else" ) } } |
范圍, 集合
使用 in 檢查一個數(shù)值是否在某個范圍之內(nèi)
1
2
3
|
if (x in 1 .. 10 ) { // do } |
檢查一個數(shù)值是否在某個范圍之外
1
2
3
|
if (x !in 0 .. 10 ) { // } |
在一個值范圍內(nèi)進(jìn)行遍歷迭代
1
2
3
|
for (x in 0 .. 10 ) { // } |
使用 in 檢查一個集合是否包含某個對象
1
2
3
|
if (name in names) { //names.contains() // } |
在一個集合上進(jìn)行遍歷迭代
1
2
3
|
for (name in names) { println(name) } |
null檢查
當(dāng)一個引用可能為 null 值時, 對應(yīng)的類型聲明必須明確地標(biāo)記為可為 null。
1
2
3
4
5
6
7
8
9
10
11
|
fun parseInt(str: String): Int? { // todo } fun main(args: Array<String>) { var name: String? val x = parseInt(args[ 0 ]) if (x != null ) { // check null // todo } } |
is 類型
is 檢查一個表達(dá)式的值是不是某個類型的實(shí)例, 如果對一個不可變的局部變量或?qū)傩赃M(jìn)行過類型檢查, 那么之后的代碼就不必再對它進(jìn)行顯式地類型轉(zhuǎn)換。
1
2
3
4
5
6
|
fun getStringLength(obj: Any): Int? { if (obj is String && obj.length > 0 ) { return obj.length // obj as String after is } return null } |
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
原文鏈接:http://www.jianshu.com/p/c00905f00af6