Android Kotlin

Kotlin入门(一):变量的声明和使用

2018-04-03  本文已影响31人  无余

变量声明

val a: Int = 1  //在声明的时候直接赋值
val b = 2   // 类型是明确的,变量类型Int可省去
val c: Int  // 在声明时没有赋值,变量类型Int不可省去
c = 3       // 只可赋值一次,此后c值不能再变
var a=0
a=1
a=3
fun main(args: Array<String>) {
    print(Test().property)
}

class Test{
    var property="property"
}
fun main(args: Array<String>) {
    print(Test.com)
}

class Test{
    companion object{
        var com="com"
    }
}

package a.b.c
var top = "top"
fun main(args: Array<String>) {
    print(a.b.c.top)
}

Getters and Setters

通过反编译可知,编译过程会生成对应的setter和getter方法。
如果变量var类型,则生成setter和getter方法,如果是val类型则只生成getter方法。
我们不能直接调用getter和setter方法,其实当我们对变量进行操作时,本质上就是调用了这些方法。


我们也可以自定义getter和setter方法

<var <propertyName>[: <PropertyType>] [= <property_initializer>]
    [<getter>]
    [<setter>]

当给变量赋值时会调用setter方法,调用变量得到的是getter中的返回值
样例:

var name: String = "111"
    get() {
        return "{$field}"
    }
    set(value) {
        field = "[$value]"
    }

fun main(args: Array<String>) {
    println(name)
    name = "222"
    print(name)
}

结果:

{111}
{[222]}

通过反编译可知,如对于上面的name变量,编译过程会生成

    public static final String getName() {
        return '{' + name + '}';
    }

    public static final void setName(@NotNull String value) {
        Intrinsics.checkParameterIsNotNull(value, "value");
        name = '[' + value + ']';
    }
上一篇 下一篇

猜你喜欢

热点阅读