標(biāo)簽:kotlin?android?kotlin語法
摘要
如果你真的希望深入的了解kotlin語言,可以查看英文版Kotlin語言文檔,或者我的kotlin語言文檔中文翻譯項目KotlinDoc-cn:https://github.com/kymjs/KotlinDoc-cn
本文原創(chuàng),轉(zhuǎn)載請注明地址:http://blog.kymjs.com/
正文
在閱讀以下內(nèi)容前,你可能需要先了解一些Kotlin語言的特性:在語句的行尾可以不用加分號(加上也不會錯),聲明一個方法需要加上fun關(guān)鍵字,如果函數(shù)是重載父類的方法,還必須要加上override關(guān)鍵字,方法的參數(shù)是先寫形參名后跟冒號再寫形參類型;kotlin源文件不需要相匹配的目錄和包,源文件可以放在任何文件目錄。但是我們在寫Android的Activity等類時,清單文件中的聲明,必須與實際包路徑相匹配。
定義函數(shù)方法
例1:方法包含兩個Int參數(shù)并返回Int類型值
funsum(a:Int,b:Int):Int{returna+b}
例2:方法體只有一條語句,并且自動推測返回類型
funsum(a:Int,b:Int)=a+b
例3:如果方法是一個public的,則必須明確寫出返回類型
publicfun sum(a:Int,b:Int):Int=a+b
例4:返回一個沒有意義的值(類似Java中的void)
fun printSum(a:Int,b:Int):Unit{print(a+b)}// 如果是返回Unit類型,則可以省略(對于public方法也是這樣):publicfun printSum(a:Int,b:Int){print(a+b)}
使用nullable值以及空值檢測
引用或函數(shù)返回值如果可能為null值,則必須顯式標(biāo)記nullable。
(在類型后面跟一個問號表示這個對象可能為空,跟兩個感嘆號表示這個類型一定不為空)
fun main(args:Array){if(args.size()<2){print("Two integers expected")return}valx=parseInt(args[0])valy=parseInt(args[1])//必須做判斷,因為x或y有可能為空if(x!=null&&y!=null){// x 和 y 在已經(jīng)檢測不為null時,系統(tǒng)會自動將其轉(zhuǎn)換為非空類型checkprint(x*y)}}/**
* 如果str不能轉(zhuǎn)為Int類型,則返回null
*/fun parseInt(str:String):Int?{// (代碼略)}
in關(guān)鍵字的使用
如果一個數(shù)字是在某一個區(qū)間內(nèi),可以使用in關(guān)鍵字
//打印y次OKif(xin1..y-1)print("OK")//如果x不存在于array中,則輸出Outif(x!in0..array.lastIndex)print("Out")//打印1到5for(xin1..5)print(x)//遍歷集合(類似于Java中的for(String name : names))for(nameinnames)println(name)//如果names集合中包含text對象則打印yesif(textinnames)
類型檢測并自動轉(zhuǎn)換
is關(guān)鍵字的用法(類似于Java中的instanceof關(guān)鍵字)
例1
fun getStringLength(obj:Any):Int?{if(objisString){// 做過類型判斷以后,obj會被系統(tǒng)自動轉(zhuǎn)換為String類型returnobj.length}//在這里還有一種方法,與Java中instanceof不同,使用!is// if (obj !is String){//? // XXX// }// 這里的obj仍然是Any類型的引用returnnull}
例2
fun getStringLength(obj:Any):Int?{// 在左側(cè)obj已經(jīng)被判斷為String類型,所以在&&的右側(cè)可以直接將obj當(dāng)成String類型來使用if(objisString&&obj.length>0){returnobj.length}returnnull}
when表達式
(類似于Java中的switch)
fun cases(obj:Any){when(obj){1->print("第一項")"hello"->print("這個是字符串hello")isLong->print("這是一個Long類型數(shù)據(jù)")!isString->print("這不是String類型的數(shù)據(jù)")else->print("else類似于Java中的default")}}
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
原文:http://blog.csdn.net/kymjs/article/details/47292739