在Kotlin中,一切都是对象。所以,所有变量也都是对象(也就是说,任何变量都是根据引用类型来使用的)
Kotlin的变量分为var(可变的)、val(不可变的)
var
是可写的,在它生命周期中可以被多次赋值;
val
是只读的,仅能一次赋值,后面就不能被重新赋值。
package com.zhoujian.kotlindemo
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var a = 1
a = 2
Log.i("zhoujian", "a=" + a);
Log.i("zhoujian", "a::class=" + a::class);
Log.i("zhoujian", "a::class.java=" + a::class.java);
Log.i("zhoujian", "-----------------------------------------------------------------1");
var x = 5
x += 1
Log.i("zhoujian", "x=" + x);
Log.i("zhoujian", "-----------------------------------------------------------------2");
val b = "a"
Log.i("zhoujian", "b=" + b);
Log.i("zhoujian", "b::class=" + b::class);
Log.i("zhoujian", "b::class.java=" + b::class.java);
Log.i("zhoujian", "-----------------------------------------------------------------3");
val c: Int = 1 //立即赋值
val d = 2 //自动推断出Int类型
Log.i("zhoujian", "c=" + c);
Log.i("zhoujian", "d=" + d);
}
}
打印结果:
06-11 17:08:26.646 20019-20019/? I/zhoujian: a=2
06-11 17:08:26.648 20019-20019/? I/zhoujian: a::class=int (Kotlin reflection is not available)
06-11 17:08:26.648 20019-20019/? I/zhoujian: a::class.java=int
06-11 17:08:26.648 20019-20019/? I/zhoujian: -----------------------------------------------------------------1
06-11 17:08:26.649 20019-20019/? I/zhoujian: x=6
06-11 17:08:26.649 20019-20019/? I/zhoujian: -----------------------------------------------------------------2
06-11 17:08:26.649 20019-20019/? I/zhoujian: b=a
06-11 17:08:26.649 20019-20019/? I/zhoujian: b::class=class java.lang.String (Kotlin reflection is not available)
06-11 17:08:26.649 20019-20019/? I/zhoujian: b::class.java=class java.lang.String
06-11 17:08:26.649 20019-20019/? I/zhoujian: -----------------------------------------------------------------3
06-11 17:08:26.649 20019-20019/? I/zhoujian: c=1
06-11 17:08:26.649 20019-20019/? I/zhoujian: d=2