Kotlin和Java的区别
打印日志
Java
System.out.print("hello wold");
System.out.println("hello world");
Kotlin
print("hello world")
println("hello world")
定义变量与常量
JavaString name = "yun";
final String name = "yun";
Kotlin
var name = "yun"
val name = "yun"
null声明
Java
String name;
name = null;
Kotlin
var name : String?
name = null
空判断
Java
if(text != mull) {
int lenght = text.length;
}
Kotlin
name.let{
val lenght = it.lenght
}
val lenght = name?.lenght
字符串拼接
JavaString firstName = "Zhao";
String lastName = "YunPeng";
String message = "my name is " + firstName + lastName;
Kotlin
val firstName = "Zhao"
val lastName = "Yun Peng"
val message = "my name is $firstName $lastName"
换行
Java
String message = "First Line\n" +
"Second Line\n" +
"Third Line";
Kotlin
val message = """
|First Line
|Second Line
|Third Line
""".trimMargin()
三元表达式
JavaString text = x > 5 ? "x > 5" : "x < 5"
Kotlin
val text = if (x > 5) "x > 5" else "x < 5"
操作符
Javafinal int andResult = a & b;
final int orResult = a | b;
final int xorResult = a ^ b;
final int rightShift = a >> 2;
final int leftShift = a << 2;
final int unSignedRightShift = a >>> 2;
Kotlin
val andResult = a and b
val orResult = a or b
val xorResult = a xor b
val rightShift = a shr b
val leftShift = a shl b
val unSignedRightShift = a ushr 2
类型判断和转换(声明式)
JavaCar car = (Car) object;
Kotlin
var car = object as Car
类型判断和转换(隐式)
Javaif(object instance Car) {
Car car = (Car) object;
}
Kotlin
if (object is Car) {
var car = object
}
多重条件
Javaif (score >= 0 && score <= 300)
Kotlin
if (score in 0..300)
更灵活的case 语句
Javaint score = 3;
String grade;
switch (score) {
case 1:
case 2:
case 3:
grade = "falied";
break;
case 4:
case 5:
grade = "OK";
break;
case 6:
case 7:
case 8:
grade = "good";
break;
case 9:
case 10:
grade = "Excellent";
break;
default:
grade = "failed";
break;
}
Kotlin
val score = 5
val grade = when (score) {
in 1..3 -> "failed"
4,5 -> "OK"
in 6..8 -> "good"
9,10 -> "excellent"
else -> "failed"
}
for 循环
Javafor (int i = 0; i < size; i++) { }
for (String item: collections) { }
for (Map.Entry<Key, Value> entry : map.entrySet()) { }
Kotlin
for (i in 1..10) { }
for (i in 1 until 10) { }
for (i in 10 downTo 1) { }
for (i in 1..10 step 2) { }
for (i in 10 downTo 1 step 2) { }
for (item in collections) { }
for ((key, value) in map) { }
更方便的集合操作
Javafinal List<Integer> listNumbers = Arrays.asList(1,2,3,4);
final List<Integer> ListNums = List.of(1,2,3,4)
final Map<Integer, String> maps = new HashMap<Integer, String>();
maps.put(1,"Android");
maps.put(2, "IOS");
final Map<Integer, String> keyValues = Map.of(1 to "Android",
2 to "IOS");
Kotlin
val listNumbers = listof(1,2,3,4)
val keyValues = mapof(1 to "Android",
2 to "IOS")
遍历
Java//Java 7 and below
for (Car car : cars) {
System.out.println("this is the " + car);
}
//Java 8+
cars.forEach (car -> System.out.println("this is the " + car))
//Java 7 and below
for (Car car : cas) {
if (car.speed > 70) {
System.out.println("this car speed is " + car.speed)
}
}
//Java 8+
cars.stream.filter(car -> car.speed > 70).forEach(car -> System.out.println("this car speed is " + car.speed))
Kotlin
cars.map{ car ->
println("this car is $car")
}
cars.filter{ car ->
car.speed > 70
}.map {car ->
println("this car speed is ${car.speed}")
}