Kotlin基礎(chǔ)

2.1 基本要素

  1. 函數(shù)
//一般函數(shù)
fun max(a: Int ,b: Int): Int{
  return if(a>b) a else b
}
//表達式函數(shù),函數(shù)體是單個表達式構(gòu)成,可以去掉花括號和return語句
fun max(a: Int ,b: Int): Int = if(a>b) a else b
//編譯器會自動分析作為函數(shù)體的表達式,并把它的類型作為函數(shù)的返回類型
//并且只有表達式函數(shù)的返回值可以省略
fun max(a: Int,b: Int) = if(a>b) a else b
  1. 變量
//如果不指定變量類型,編譯器會自動分析初始化器表達式的值,把值的類型作為變量的類型
//如果變量沒有初始化器,需要顯式地指定它的類型
//可變變量和不可變量
var a: Int = 42
var a = 42
//對應(yīng)java的final變量
val a = 42
val a: Int = 42
  1. 字符串模板
//調(diào)用的java的StringBuilder對象的方法
val name = "zhangsan"
println("Hello,$name!")
println("Hello,${name}!")

2.2 類和屬性

值對象:只有數(shù)據(jù)沒有方法的類

class Person(val name: String)
  1. 屬性
class Person{

  //聲明只讀屬性:同時聲明了一個簡單的getter方法
  val name :String,
//聲明可寫屬性:同時聲明了getter和setter方法
  var isMarried: Boolean
}
  1. 自定義訪問器
class Person{
  val name: String
    get(){
      println("復(fù)寫了get方法")
      return name
    }
  var isMarried: Boolean
    get(){
      return isMarried
    }
    set(married : Boolen){
      isMarried = married
    }
}

  1. 目錄和包
    Kotlin不區(qū)分導(dǎo)入的是包還是函數(shù),允許使用import關(guān)鍵字導(dǎo)入任何類的聲明,也可以導(dǎo)入頂層函數(shù)的名稱。

2.3 枚舉和‘when’

  1. 枚舉的聲明
enum class  Color{
  RED,GREEN,BLUE
}

//枚舉類可以有屬性和方法
//如果在枚舉類中定義任何方法,就需要把枚舉常量列表和方法定義用分號分開
//Kotlin唯一必須使用分號的地方
enum class Color(val r: Int,val g: Int,val b: Int){
  RED(255,0,0),
  GREEN(0,255,0),
  BLUE(0,0,255);
  fun rgb() = (r*256+g)*256+b
}
  1. 使用‘when’處理枚舉類

  2. ‘when’結(jié)構(gòu)中使用任意對象
    when結(jié)構(gòu)允許使用任何對象作為分支條件

  3. 使用不帶參數(shù)的‘when’
    如果沒有給when表達式提供參數(shù),分支條件就是任意的布爾表達式

  4. 智能轉(zhuǎn)換:合并類型檢查和轉(zhuǎn)換
    智能轉(zhuǎn)換:如果你檢查過一個變量是某種類型,后面就不再需要轉(zhuǎn)化它,可以直接把它當(dāng)做檢查過的類型使用。

//使用is檢查判斷一個變量是否是某種類型
var name = "我是不是字符串"
name is String
if(name is String){
   var n = name as String  //顯示地轉(zhuǎn)換是多余的
  name.length  //智能地轉(zhuǎn)換為String類型
}

  1. 重構(gòu):用‘when’代替‘if’
  2. 代碼塊作為‘if’和‘when’的分支
    “代碼塊中最后的表達式作為結(jié)果”,在所有使用代碼塊并期望得到一個結(jié)果的地方成立

2.4 迭代事物:‘while’循環(huán)和‘for’循環(huán)

  1. ‘while’循環(huán)
  2. 迭代數(shù)字:區(qū)間和數(shù)列
    ‘··’運算符標(biāo)識區(qū)間
val oneToTen = 1··10
//kotlin中的區(qū)間是前后閉合的
  1. 迭代map
  2. ‘in’檢查集合和區(qū)間的成員

2.5 Kotlin中的異常

  1. ‘try’、‘catch’和‘finally’
    kotlin中不區(qū)分受檢異常未受檢異常
  2. ‘try’作為表達式

小結(jié)

  1. fun關(guān)鍵字來聲明函數(shù)。
  2. var和val關(guān)鍵字分別用來聲明可變變量和只讀變量
  3. 字符串模板可避免繁瑣的字符串連接。$變量名或者${}來包圍一個表達式
  4. 值對象類在kotlin中以簡潔的方式表示
  5. if是帶返回值的表達式
  6. when表達式比switch更強大
  7. 編譯器智能轉(zhuǎn)換類型
  8. 區(qū)間的創(chuàng)建
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容