Kotlin和Java的区别

387 阅读2分钟

Kotlin和Java的区别


打印日志

Java

System.out.print("hello wold");
System.out.println("hello world");

Kotlin

print("hello world")
println("hello world")

定义变量与常量

Java
String 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

字符串拼接

Java
String 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()

三元表达式

Java
String text = x > 5 ? "x > 5" : "x < 5"

Kotlin

val text = if (x > 5) "x > 5" else "x < 5"

操作符

Java
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

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

类型判断和转换(声明式)

Java
Car car = (Car) object;

Kotlin

var car = object as Car

类型判断和转换(隐式)

Java
if(object instance Car) {
	Car car = (Car) object;
}

Kotlin

if (object is Car) {
	var car = object
}

多重条件

Java
if (score >= 0 && score <= 300)

Kotlin

if (score in 0..300)

更灵活的case 语句

Java
int 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 循环

Java
for (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) { }

更方便的集合操作

Java
final 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}")
}