Kotlin基礎

2.1 基本要素

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

2.2 類和屬性

值對象:只有數據沒有方法的類

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("複寫了get方法")
      return name
    }
  var isMarried: Boolean
    get(){
      return isMarried
    }
    set(married : Boolen){
      isMarried = married
    }
}

  1. 目錄和包
    Kotlin不區分導入的是包還是函數,允許使用import關鍵字導入任何類的聲明,也可以導入頂層函數的名稱。

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’結構中使用任意對象
    when結構允許使用任何對象作爲分支條件

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

  4. 智能轉換:合併類型檢查和轉換
    智能轉換:如果你檢查過一個變量是某種類型,後面就不再需要轉化它,可以直接把它當做檢查過的類型使用。

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

  1. 重構:用‘when’代替‘if’
  2. 代碼塊作爲‘if’和‘when’的分支
    “代碼塊中最後的表達式作爲結果”,在所有使用代碼塊並期望得到一個結果的地方成立

2.4 迭代事物:‘while’循環和‘for’循環

  1. ‘while’循環
  2. 迭代數字:區間和數列
    ‘··’運算符標識區間
val oneToTen = 1··10
//kotlin中的區間是前後閉合的
  1. 迭代map
  2. ‘in’檢查集合和區間的成員

2.5 Kotlin中的異常

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

小結

  1. fun關鍵字來聲明函數。
  2. var和val關鍵字分別用來聲明可變變量和只讀變量
  3. 字符串模板可避免繁瑣的字符串連接。$變量名或者${}來包圍一個表達式
  4. 值對象類在kotlin中以簡潔的方式表示
  5. if是帶返回值的表達式
  6. when表達式比switch更強大
  7. 編譯器智能轉換類型
  8. 區間的創建
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章