相关文章:
Hello Kotlin(一)初次见面
Hello Kotlin(二)环境搭建
Hello Kotlin(三)类和函数
转载请注明出处:http://blog.csdn.net/qq_34358104/article/details/73795890
在 Kotlin 中,一切都是对象。没有 Java 中那样原始的基本数据类型。
本篇是 Kotlin 学习笔记的第四篇:变量和属性
1、基本类型
在 Kotlin 中,比如 integer、float或者 boolean 等类型依然存在,但是它们全都是作为对象存在的。并且它们的名字和功能都与 Java 非常相似,但是也会有一些不同:
- 简洁的数字类型不能赋值给复杂的类型,比如,不可以给 Double 类型的变量分配一个 Int。可以这样进行类型转换:
val i:Int = 7
val d:Double = i.toDouble()
- 类型转换时自动完成的,编译器可以自动推断出具体的类型:
val i = 1 //Int类型
val l = 3L //Long类型
val d = 3.5 //Double类型
val f = 3.5F //Float类型
- 一个 String 可以像数组那样使用:
val s = "Hello Kotlin"
val a = s[2] //这是一个字符串“l”
for (b in s) {
print(b)
}
2、变量
变量可简单的定义可变(var)和不可变(val)的变量。这个与 Java 中使用的 final 很相似。但是不可变在 Kotlin 中是一个很重要的概念。
一个不可变的对象意味着在它实例化之后就不能再去改变它的状态了。如果你需要一个这个对象修改之后的版本,那就会再创建一个新的对象。这让编程更加具有健壮性和预估性。在 Java 中,大部分的对象是可变的,那就意味着任何可以访问它这个对象的代码都可以去修改它,从而影响着整个程序的其它地方。
不可变对象也可以说是线程安全的,因为它们无法去改变,也不需要去定义访问控制,因为所有线程访问到的对象都是同一个。
所以在 Kotlin 中,如果我们想使用不可变性,我们编码时思考的方式需要有一些改变。一个重要的概念是:尽可能地使用 val 。除了个别情况(特别是在 Android 中,有很多类我们是不会直接调用构造函数的),大多数时候是可以的。
3、属性
一个栗子看一下属性在 Java 和 Kotlin 中的区别:
Java 中:
public class Person {
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
......
Person person = new Person();
person.setName("小猿");
String str = person.getName();
Kotlin 中:
class Person {
var name: String = ""
}
......
val person = Person()
person.name="小猿"
val name = person.name
我们可以不用指定,属性会默认使用 getter 和 setter,区别不言而喻。
结束
由于版本问题,有些地方可能会有不同,直接在下面留言,或者微信我(yhb1600227557)都可以,帮你解答!