可变变量与不可变变量
kotlin中的变量分为可变变量和不可变变量,关键字分别为var,val
private var name1: String = "dujie1"
private val name2: String = "dujie2"
变量name1可被修改,变量name2不可被修改,对应的java表达式是这样的:
private String name1 = "dujie1";
private final String name2 = "dujie2";
默认情况下,尽可能的使用val关键字来声明所有的kotlin变量,仅在必要的时候换成var,跟java编程思想中讲到的尽可能使用局部变量的道理一样,对象用完了就及时舍弃掉,再有就是局部好管理。
不可变变量与可变对象
尽管val引用自身是不可变的,但是它指向的对象可能是可变的,例如各种集合:
val list : MutableList<String> = mutableListOf()
list.add("abc")
(MutableList是kotlin的可变List),这里的mutableListOf()就属于可变对象,虽然list是不可变变量,但是它所指向的对象是可变的。
类型省略
上面的例子可以写成:
var name1 = "dujie1"
kotlin和java一样都是一种静态类型的编程语言。这意味着所有表达式的类型在编译期就已经确定了。代码中只是省略的类型的修饰,其实在编译期也是确定了的String类型。这样做让代码更简洁,这就是所谓的类型推倒。
常量与companion object的简单使用
学习kotlin会自然而然的把java作为参考依照,下面直接拿出对比便一目了然。
class A {
val a = "a"
companion object{
val b = "b"
const val c = "c"
}
}
对应的java代码
public class A {
private final String a = "a";
private final static String b = "b";
public final static String c = "c";
}
java中的静态内容在kotlin中放到companion object{...}中,const关键字会把变量声明为public类型。