本期教程给大家分享Kotlin与Java上的主要异同,希望大家利用现有的Java知识能快速上手Kotlin开发。 打印日志 Java Kotlin 定义变量与常量常 Java Kotlin null声明 Java Kotlin 空判断 Java Kotlin 字符串拼接 Java Kotlin 换行 Java Kotlin 三元表达式 Java Kotlin 操作符 java Kotlin 类型判断和转换 (声明式) Java Kotlin 类型判断和转换 (隐式) Java Kotlin 多重条件 Java Kotlin 更灵活的case语句 Java Kotlin for循环 Java Kotlin 更方便的集合操作 Java Kotlin 遍历 Java Kotlin 方法定义 Java Kotlin 带返回值的方法 Java Kotlin 无结束符号 Java Kotlin constructor 构造器 Java Kotlin Get Set 构造器 Java KotlinSystem.out.print("hello world");
System.out.println("hello world");
print("hello world")
println("hello world")
String name = "hello world";
final String name = "hello world";
var name = "hello world"
val name = "hello world"
String otherName;
otherName = null;
var otherName : String?
otherName = null
if (text != null) {
int length = text.length();
}
text?.let {
val length = text.length
}
// or simply
val length = text?.length
String firstName = "Android";
String lastName = "Architect";
String message = "My name is: " + firstName + " " + lastName;
val firstName = "Android"
val lastName = "Architect"
val message = "My name is: $firstName $lastName"
String text = "First Line\n" +
"Second Line\n" +
"Third Line";
val text = """
|First Line
|Second Line
|Third Line
""".trimMargin()
String text = x > 5 ? "x > 5" : "x <= 5";
val text = if (x > 5)
"x > 5"
else "x <= 5"
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;
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
Car car = (Car) object;
var car = object as Car
if (object instanceof Car) {
Car car = (Car) object;
}
if (object is Car) {
var car = object // 自动识别
}
if (score >= 0 && score <= 300) { }
if (score in 0..300) { }
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";
}
var score = // some score
var grade = when (score) {
9, 10 -> "Excellent"
in 6..8 -> "Good"
4, 5 -> "OK"
in 1..3 -> "Fail"
else -> "Fail"
}
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()) { }
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) { }
final List<Integer> listOfNumber = Arrays.asList(1, 2, 3, 4);
final Map<Integer, String> keyValue = new HashMap<Integer, String>();
map.put(1, "Android");
map.put(2, "Ali");
map.put(3, "Mindorks");
// Java 9
final List<Integer> listOfNumber = List.of(1, 2, 3, 4);
final Map<Integer, String> keyValue = Map.of(1, "Android",
2, "Ali",
3, "Mindorks");
val listOfNumber = listOf(1, 2, 3, 4)
val keyValue = mapOf(1 to "Android",
2 to "Ali",
3 to "Mindorks")
// 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));
cars.forEach {
println(it.speed)
}
cars.filter { it.speed > 100 }
.forEach { println(it.speed)}
void doSomething() {
// logic here
}
void doSomething(int... numbers) {
// logic here
}
fun doSomething() {
// logic here
}
fun doSomething(vararg numbers: Int) {
// logic here
}
int getScore() {
// logic here
return score;
}
fun getScore(): Int {
// logic here
return score
}
// as a single-expression function
fun getScore(): Int = score
int getScore(int value) {
// logic here
return 2 * value;
}
fun getScore(value: Int): Int {
// logic here
return 2 * value
}
// as a single-expression function
fun getScore(value: Int): Int = 2 * value
public class Utils {
private Utils() {
// This utility class is not publicly instantiable
}
public static int getScore(int value) {
return 2 * value;
}
}
class Utils private constructor() {
companion object {
fun getScore(value: Int): Int {
return 2 * value
}
}
}
// another way
object 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;
}
}
data class Developer(val name: String, val age: Int)