1.语句和表达式
在Kotlin中,if是表达式,而不是语句。
在Java中,所有的控制结构都是语句。
而在Kotlin中,除了循环(for、while和do/while)以外大多数控制结构都是表达式。
Java中的赋值操作是表达式,在Kotlin中反而变成了语句。
语句和表达式的区别:表达式有值,并且能作为另一个表达式的一部分使用;而语句总是围绕着它的代码块中的顶层元素,并且没有自己的值。
2.变量
声明可变变量和不可变变量
val(来自value)——不可变引用。使用val声明的变量不能在初始化之后再次赋值。它对应的是Java的final变量,只可读。var(来自variable)——可变引用。这种变量的值可以被改变。这种声明对应的是普通(非final)的Java变量,可读可写。
val变量只能进行唯一一次初始化。
3.打印
在Java中的打印输出为System.out.println("Hello, " + name + "!")
而Kotlin通过在字符串字面值中引用局部变量,
- 只需要在变量名称前面加上字符$即可,如
println("Hello, \$name!"); - 在双引号中直接嵌套双引号,只要它们处在某个表达式的范围内(即花括号内),如
println("Hello, ${name}!")。
4.Kotlin默认类型
从Java到Kotlin的转换过程中,public修饰符消失了。在Kotlin中,public是默认的可见性。
5.枚举类
enum class Color {
RED, ORANGE, YELLOW, GREEN
}
这是极少数Kotlin声明比Java使用了更多关键字的例子:Kotlin用了enum class两个关键字,而Java只有enum一个关键字。
enum class Color(
val r: Int, val g: Int, val b: Int
) {
RED(255, 0, 0), ORANGE(255, 165, 0),
YELLOW(255, 255, 0), GREEN(0, 255, 0);//这里必须要有分号
fun rgb() = (r * 256 + g) * 256 + b
}
Kotlin语法中唯一必须使用分号的地方:如果要在枚举类中定义任何方法,就要使用分号把枚举常量列表和方法定义分开。