Kotlin(二)、聲明變量、函數、類、屬性

一、聲明函數、變量、類、枚舉、屬性

變量

以關鍵字開始,接變量名,最後可加類型:

    val a = 12
    val a: Int = 1//因爲賦值的類型是確定的,所以可以省略類型

如果不加指定的變量類型,編譯器會分析初始化表達式值,並將其類型作爲變量類型。如果不提供可以賦給這個變量值的信息,編譯器就無法推斷類型。

val(來自value)——不可變引用。相當於final。
var(來自variable)——可變引用。相當於非final。

默認情況下應儘可能使用val關鍵字,僅在必須時替換爲var

字符串模板,在字符串字面值中可以直接引用變量,使用$

    fun main(args: Array<String>) {
        val name = if (args.isNotEmpty()) args[0] else "Kotlin"
        println("Hello, $name!")
        println("Hello, ${args[0]}")//還可以引入複雜表達式
        println("Hello, ${ if (args.isNotEmpty()) args[0] else "Kotlin"}")//還可以引入更復雜的表達式
    }

若要顯示$需要轉義

    println("\$name!")//打印結果爲$name!

函數

    /**
     * 沒有返回任何東西的函數
     */
    fun main() {
        println("Hello,world!")
    }

    /**
     *返回Int
     */
    fun max(a: Int, b: Int): Int {
        return if (a > b) a else b
    }

    /**
     * 上面函數使用表達式函數體
     * 其返回類型也可以去掉
     * 只有!只有表達式函數的返回類型可以省略
     */
    fun max(a: Int, b: Int) = if (a > b) a else b

先看一個簡單的JavaBean

public class Person {
    private final String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

而Kotlin中只需

class Person(val name: String)

通常稱其爲值對象,其中public修飾關鍵字也消失了,因爲Kotlin中默認爲public

屬性

Java中字段+setter/getter稱爲屬性;Kotlin中屬性時頭等語言特性,完全代替了字段+setter/getter,在類中聲明屬性和聲明字段一樣,使用val、var關鍵字即可。val只讀,var可變。
聲明屬性:

class Person {
    val name: String
    var isMarried: Boolean
}

使用屬性:

val person = Person("Bob", true)
println(person.name)
println(person.isMarried)
person.isMarried=false//將值修改爲false,對應Java中person.setMarried(false)
println(person.isMarried)

由於內置了getter,若想即時計算輸出結果則需要自定義getter
自定義訪問器
定義矩形類,若長等於寬則爲正方形

class Rectangle(val height: Int, val width: Int) {
    val isSquare: Boolean
        get() {
            return height == width
        }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章