kotlin基礎語法
Kotlin 文件以.kt為后綴
1.包聲明
代碼文件的開通一般為包的聲明
package com.sdq.ko
improt java.util.*
//方法
fun test(){}
//類聲明
class Runoob{}
kotlin 源文件不需要相匹配的目錄和包逛艰,源文件可以放在任何文件目錄萎河。
以上列子中test()的全名是com.runoob.main.test、Runoob的全名是com.runoob.main.Runoob.
如果沒有指定包,默認為default包
默認導入
有多個包會默認導入到每個kotlin文件中
kotlin.* ,kotlin.annotation.* , kotlin.collenction.* ,kotlin.io.,
kotlin.ranges. ,kotlin.sequences., kotlin.text.
函數(shù)定義
函數(shù)定義使用關鍵字fun參數(shù)個數(shù)為:參數(shù):類型
如下代碼段中sum是方法名稱查蓉,a和b是參數(shù)赫段,函數(shù)的返回類型是Int的
fun sum(a:Int,b:Int):Int{
return a+b
}
表達式作為函數(shù)體呀打,返回類型自定推斷
fun sum(a:Int,b:Int)=a+b
public fun sum(a:Int ,b Int):Int=a+b. //如果函數(shù)的修飾符是public,那么他的函數(shù)返回值就必須明確寫出糯笙。
如果函數(shù)沒有返回值贬丛,那么就像我們java中的void
//次函數(shù)就是沒有返回值
fun printSum(a:Int,b:Int):Unit{
}
如果是返回 Unit類型的,則可以省略(對public修飾的函數(shù)也是一樣)
public fun printSum(a:Int,b:Int){
print (a+b)}
可變長的參數(shù)函數(shù)
函數(shù)的變長參數(shù)可以用vararg關鍵字進行標識:如下
fun vars(vararg v:Int){
for(vt in v){
print(vt)
}
}
調(diào)用時可以使用vars(1给涕,2豺憔,4,6)
定義長量變量
可變變量定義 :var關鍵字
var <標識符> :<類型>=<初始值>
常量使用關鍵字val
val a:Int=10000000 //val 修飾的變量是不可變的够庙,只能賦值一次恭应,跟java中的final 關鍵字一樣。
常量與變量都可以沒有初始化值耘眨,但是在引用前是必須初始化的昼榛,編譯器支持自動類型判斷,即聲明時可以不指定類型毅桃,由編譯器判斷褒纲,如下代碼片段:
val a:Int =1
val b=1
val c:Int
c=1
var x=5
x+=1
注釋
Kotlin 支持單行和多行注釋准夷,和java一樣 // 和 /注釋塊/ Kotlin 中允許嵌套
字符串模板
varName 表示變量值
${varName.fun()}表示變量的方法返回值
kotlin中NULL的檢查機制
kotlin 中的空安全設計對聲明可為空的參數(shù),在使用時要進行判空處理莺掠,有兩種處理方式衫嵌,字段后加!!,像java一樣拋空異常,另一種字段后加彻秆?楔绞,可不做處理返回值為null或配合?:做判空處理
var age:String?="23"http://類型后面加唇兑?表示可為空酒朵,允許age為null
//當age為null時會拋出空指針
val ages=age!!.toInt()
//當age為null時,不做任何處理扎附,返回值為null
val ages1=age?.toInt();
//表示當age為null時返回-1蔫耽,不為null時返回age的值
val ages2=age?.toInt()?--:-1
類型檢查及自動類型轉(zhuǎn)換
在kotlin中如果要判斷一個對象是否是某個類型使用關鍵字 is,在java中使用 instanceof 來判斷留夜,可以加!is 表示非
fun getStringLength(obj:Any):Int?{
if(obj is String){
return obj.length//自動轉(zhuǎn)成了String類型
}
}
區(qū)間表達式
區(qū)間表達式由具有操作符形式.. de rangeTo 函數(shù)輔以in和!in形成
區(qū)間是任何可比較類型定義的匙铡,但對于整型原生類型,它有一個優(yōu)化的實現(xiàn)
for(i in 1..4)//全開區(qū)間 i>=1 i<=4
for(i in 1..4 step 2) //按照2的倍數(shù)增長
for(i in 4 downTo 1) //從4開始輪詢
for(i in 1 until 10) //半開半閉區(qū)間 排除最后一個碍粥,最后一個不算