前言
下面分别以变量声明,函数定义,空安全,关键字,lambda以及Kotlin的特性进行简单记录。记录于此,方便查阅。
正文
变量声明
Kotlin
//可变变量
var : Int = 10
//不变变量
val : String = "Hello"
Java
int varVariable = 10;
final String CONST_VARIABLE = "Hello";
函数定义
Kotlin
fun greet(name: String) {
println("Hello, $name")
}
fun sum(a: Int, b: Int): Int = a + b
Java
public void greet(String name) {
System.out.println("Hello, " + name);
}
public int sum(int a, int b) {
return a + b;
}
空安全
Kotlin
var nonNull: String = "Kotlin"
var nullable: String? = null
val len: Int? = nullable?.length
val actualLength: Int = nullable?.length ?: 0
Java
需使用注解并额外检查
String nullable = null;
int len = nullable != null ? nullable.length() : 0;
Kotlin特有特性
数据类
数据类(data class)自动生成常用方法:equals、hashCode、toString、copy 和 componentN。
data class User(val id: Long, var name: String)
Java 等价需手动实现:getter/setter、equals 等。
伴生对象
伴生对象(Companion Object),用于替代 Java 的 static 成员。
class Utils {
companion object {
const val VERSION = 1
fun log(msg: String) = println(msg)
}
}
Utils.VERSION
Utils.log("Hello")
扩展函数
为已有类型添加新函数,无需继承或修改原代码。
fun String.isBlankOrEmpty(): Boolean {
return this.isBlank() || this.isEmpty()
}
val s = ""
println(s.isBlankOrEmpty())
Java 无此特性,可通过工具类静态方法实现。
对象声明
声明单例对象,线程安全且简洁。
object Database {
fun connect() { /*...*/ }
}
Database.connect()
Java 需手动实现单例模式或使用 enum 单例。
关键字
关键字 | 说明 | Java 等价 |
---|---|---|
fun | 声明函数 | 方法声明 |
var | 可变变量 | 普通变量 |
val | 只读变量 | final 变量 |
? | 可空类型 | @Nullable |
when | 多分支语句 | switch / if-else |
object | 单例或伴生对象声明 | 单例模式 / static |
data | 数据类 | POJO需手写 |
sealed | 限制子类范围 | 枚举或抽象基类 |
Lambda表达式
Kotlin
val list = listOf(1, 2, 3, 4, 5)
val evens = list.filter { it % 2 == 0 }
val sumLambda: (Int, Int) -> Int = { a, b -> a + b }
Java
Java 8 Lambda
List<Integer> evens = list.stream()
.filter(i -> i % 2 == 0)
.collect(Collectors.toList());
BiFunction<Integer, Integer, Integer> sumLambda = (a, b) -> a + b;
参考文章
历史文章
- 《Kotlin与Java简单对比》
- 《人生大事》
- 《年会不能停!》
- 《流浪地球》
- 《流浪地球2》
- 《哪吒之魔童降世》
- 《疯狂的麦克斯:狂暴女神》
- 《git log命令参数部分记录》
- 《禅道》
© 版权声明