val text = """ |First Line |Second Line |Third Line """.trimMargin()
三元表达式
Java
1
String text = x > 5 ? "x > 5" : "x <= 5";
Kotlin
1
val text = if (x > 5) "x > 5"else"x <= 5"
操作符
java
1 2 3 4 5 6
final 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
1 2 3 4 5 6
val andResult = a and b val orResult = a or b val xorResult = a xor b val rightShift = a shr 2 val leftShift = a shl 2 val unsignedRightShift = a ushr 2
类型判断和转换 (声明式)
Java
1
Car car = (Car) object;
Kotlin
1
var car = object as Car
类型判断和转换 (隐式)
Java
1 2 3
if (object instanceof Car) { Car car = (Car) object; }
var score = // some score var grade = when (score) { 9, 10 -> "Excellent" in6..8 -> "Good" 4, 5 -> "OK" in1..3 -> "Fail" else -> "Fail" }
for循环
Java
1 2 3 4 5 6 7
for (int i = 1; i <= 10 ; i++) { } for (int i = 1; i < 10 ; i++) { } for (int i = 10; i >= 0 ; i--) { } for (int i = 1; i <= 10 ; i+=2) { } for (int i = 10; i >= 0 ; i-=2) { } for (String item : collection) { } for (Map.Entry entry: map.entrySet()) { }
Kotlin
1 2 3 4 5 6 7
for (i in 1..10) { } for (i in 1 until 10) { } for (i in 10 downTo 0) { } for (i in 1..10 step 2) { } for (i in 10 downTo 0 step 2) { } for (item in collection) { } for ((key, value) in map) { }
更方便的集合操作 Java
1 2 3 4 5 6 7
final List listOfNumber = Arrays.asList(1, 2, 3, 4); final Map keyValue = new HashMap(); map.put(1, "Android"); map.put(2, "Ali"); map.put(3, "Mindorks"); // Java 9 final List listOfNumber = List.of(1, 2, 3, 4); final Map keyValue = Map.of(1, "Android", 2, "Ali", 3, "Mindorks");
Kotlin
1 2
val listOfNumber = listOf(1, 2, 3, 4) val keyValue = mapOf(1 to "Android", 2 to "Ali", 3 to "Mindorks")
遍历 Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
// Java 7 and below for (Car car : cars) { System.out.println(car.speed); } // Java 8+ cars.forEach(car -> System.out.println(car.speed)); // Java 7 and below for (Car car : cars) { if (car.speed > 100) { System.out.println(car.speed); } } // Java 8+ cars.stream() .filter(car -> car.speed > 100) .forEach(car -> System.out.println(car.speed));
voiddoSomething(){ // logic here } voiddoSomething(int... numbers){ // logic here }
Kotlin
1 2 3 4 5 6
fundoSomething() { // logic here } fundoSomething(vararg numbers: Int) { // logic here }
带返回值的方法
Java
1 2 3 4
intgetScore(){ // logic here return score; }
Kotlin
1 2 3 4 5 6
fungetScore(): Int { // logic here return score } // as a single-expression function fungetScore(): Int = score
无结束符号 Java
1 2 3 4
intgetScore(int value){ // logic here return2 * value; }
Kotlin
1 2 3 4 5 6
fungetScore(value: Int): Int { // logic here return2 * value } // as a single-expression function fungetScore(value: Int): Int = 2 * value
constructor 构造器 Java
1 2 3 4 5 6 7 8
publicclassUtils{ privateUtils(){ // This utility class is not publicly instantiable } publicstaticintgetScore(int value){ return2 * value; } }
Kotlin
1 2 3 4 5 6 7 8 9 10 11 12 13
classUtilsprivateconstructor() { companionobject { fungetScore(value: Int): Int { return2 * value } } } // another way object Utils { fungetScore(value: Int): Int { return2 * value } }