val text = """ |First Line |Second Line |Third Line """.trimMargin()
三元表达式
Java
1
String text = x > 5 ? "x > 5" : "x <= 5";
Kotlin
123
val text = if (x > 5) "x > 5" else "x <= 5"
类型判断和转换 (声明式)
Java
123
if (object instanceof Car) {}Car car = (Car) object;
Kotlin
123
if (object is Car) {}var car = object as Car
类型判断和转换 (隐式)
Java
123
if (object instanceof Car) { Car car = (Car) object;}
Kotlin
123
if (object is Car) { var car = object }
多重条件
Java
1
if (score >= 0 && score <= 300) { }
Kotlin
1
if (score in 0..300) { }
更灵活的case语句
Java
123456789101112131415161718192021222324
int score = // some score;String grade;switch (score) { case 10: case 9: grade = "Excellent"; break; case 8: case 7: case 6: grade = "Good"; break; case 5: case 4: grade = "Ok"; break; case 3: case 2: case 1: grade = "Fail"; break; default: grade = "Fail";}
Kotlin
12345678
var score = // some scorevar grade = when (score) { 9, 10 -> "Excellent" in 6..8 -> "Good" 4, 5 -> "Ok" in 1..3 -> "Fail" else -> "Fail"}
for循环
Java
12345678910111213
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<String, String> entry: map.entrySet()) { }
Kotlin
12345678910111213
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 1 step 2) { }for (item in collection) { }for ((key, value) in map) { }
fun getScore(): Int { // logic here return score}// as a single-expression functionfun getScore(): Int = score
无结束符号
Java
1234
int getScore(int value) { // logic here return 2 * value;}
Kotlin
12345678
fun getScore(value: Int): Int { // logic here return 2 * value}// as a single-expression functionfun getScore(value: Int): Int = 2 * value
constructor 构造器
Java
1234567891011
public class Utils { private Utils() { // This utility class is not publicly instantiable } public static int getScore(int value) { return 2 * value; } }
Kotlin
1234567891011121314151617181920
class Utils private constructor() { companion object { fun getScore(value: Int): Int { return 2 * value } }}// other way is also thereobject Utils { fun getScore(value: Int): Int { return 2 * value }}
public class Developer { private String name; private int age; public Developer(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Developer developer = (Developer) o; if (age != developer.age) return false; return name != null ? name.equals(developer.name) : developer.name == null; } public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + age; return result; } public String toString() { return "Developer{" + "name='" + name + ''' + ", age=" + age + '}'; }}
Kotlin
1
data class Developer(val name: String, val age: Int)
Java
12345678910111213
public class Utils { private Utils() { // This utility class is not publicly instantiable } public static int triple(int value) { return 3 * value; } }int result = Utils.triple(3);
Kotlin
12345
fun Int.triple(): Int { return this * 3}var result = 3.triple()
Copyright (C) 2017 MINDORKS NEXTGEN PRIVATE LIMITED Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.