本篇博客 按照Kotlin官方文档,总结出了Kotlin与Java相比,常用语法的不同之处,方便快速入门Kotlin,本人才疏学浅,如有错误还请指正。
基础语法
1.定义变量:
Kotlin中的基本数据类型和Java差不多,只是形式上每种数据的首字母都是大写的:
Int
Long
Short
Byte
Float
Double
不可变(只读)的变量
Java
final int a = 1;
kotlin
val a = 1
val a : Int = 1
在Kotlin中,变量如果被初始化了,他的值是可以被推导出来的,所以这里既可以不指定他为Int类型,让编译器自己去推导,也可以显式指定出来。
此外,Kotlin中每句话结尾可以不使用分号!
可变的变量
Java
int a = 1
Kotlin
var a = 1
var a : Int = 1
在Kotlin中,val用于修饰不可变的(只读)变量,就类似于Java中的final关键字,var用于修饰可变的变量,就类似于Java 中的普通的变量。 与 Java不同的是变量的名字在前面,变量的类型在后面,中间要以:
隔开。
此外,在Kotlin中一条语句的结尾可以不用写;
,当然如果写上也不会报错。
2.定义函数:
Java
public void eat(String food){
System.out.println("I like eat "+ food);
}
这样一个简单的Java方法对应到Kotlin中的语法如下:
kotlin
public fun eat(food : String) : Unit{
println("I like eat $food")
}
当然,在kotlin中如果没有显示制定访问修饰符,那么默认为public
,这就意味着这里的public
可以省略,这里的Unit
就对应于Java中的void
,但在Kotlin中,如果没有返回值,那么Unit
也是可以省略的,即下面这种形式:
fun eat(food : String){
println("I like eat $food")
}
$
dollar符号是模板表达式开始的标志,这里可以理解为“取出变量food的值”,值得注意的是,Java中的System.out.println()
在Kotlin中变成了println()
,这和C语言中的输出函数的名字一样了。
此外,函数的参数还可以有默认值:
public fun eat(food : String = "Apple") : Unit{
println("I like eat $food")
}
3.字符串模板
字符串可以包含一个模板表达式,它的结果会被连接到字符串中,在Java中,会用+
号来达到类似的效果。
Java
String animal = "dog";
System.out.println("There is a "+ animal);
System.out.println("Dog has "+animal.length()+"words");
Kotlin
val animal = "dog"
println("There is a $animal")
println("Dog has ${animal.length} words")
如果$
后面跟的不再是一个变量,就要加上{}
来表示取这个式子的值
4.数组
Kotlin中的数组和Java中的区别有点大,在Kotlin中Array 类代表着数组,[]
可以用于访问数组的元素,实际上 []
被进行了操作符的重载,调用的是 Array 类的 setter
和 getter
方法
创建一个数组有三种方式:
(1)通过指定大小,使用arrayOfNulls
直接创建一个空数组:
var ages = arrayOfNulls<Int>(3)
(2)使用xxxArrayOf
创建并初始化数组:
var ages = intArrayOf(19,20,21)
(3)使用lambda创建并初始化数组:
var ages = IntArray(3, { i -> i + 19 })
for (j in ages) println("$j")
结果是:
19
20
21
或者直接这样写:
var ages = Array(3, { i