Android|还不知道Kotlin与Java的异同(看完这篇彻底明白了)

Android|还不知道Kotlin与Java的异同(看完这篇彻底明白了)
文章图片

在这篇文章中呢,我将为大家分享Kotlin与Java上的主要异同,希望能够帮助到各位小伙伴利用现有的Java知识快速上手Kotlin开发。
相关视频资料:
Kotlin协程从实战到原理
Koltin语言核心点总结和实践
打印日志

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

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

定义变量与常量常
Java
String name = "hello world"; final String name = "hello world";

Kotlin
var name = "hello world" val name = "hello world"

null声明
Java
String otherName; otherName = null;

Kotlin
var otherName : String? otherName = null

空判断
Java
if (text != null) { int length = text.length(); }

Kotlin
text?.let { val length = text.length } // or simply val length = text?.length

字符串拼接
Java
String firstName = "Android"; String lastName = "Architect"; String message = "My name is: " + firstName + " " + lastName;

Kotlin
val firstName = "Android" val lastName = "Architect" val message = "My name is: $firstName $lastName"

换行
Java
String text = "First Line\n" + "Second Line\n" + "Third Line";

Kotlin
val text = """ |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 2 val leftShift= a shl 2 val unsignedRightShift = a ushr 2

类型判断和转换 (声明式)
Java
Car car = (Car) object;

Kotlin
var car = object as Car

类型判断和转换 (隐式)
Java
if (object instanceof 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 = // 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
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循环
Java
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
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
final List listOfNumber = Arrays.asList(1, 2, 3, 4); final Map keyValue = https://www.it610.com/article/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 = https://www.it610.com/article/Map.of(1,"Android", 2, "Ali", 3, "Mindorks");

Kotlin
val listOfNumber = listOf(1, 2, 3, 4) val keyValue = https://www.it610.com/article/mapOf(1 to"Android", 2 to "Ali", 3 to "Mindorks")

遍历
Java
// 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));

Kotlin
cars.forEach { println(it.speed) }cars.filter { it.speed > 100 } .forEach { println(it.speed)}

方法定义
Java
void doSomething() { // logic here }void doSomething(int... numbers) { // logic here }

Kotlin
fun doSomething() { // logic here }fun doSomething(vararg numbers: Int) { // logic here }

带返回值的方法
Java
int getScore() { // logic here return score; }

Kotlin
fun getScore(): Int { // logic here return score }// as a single-expression functionfun getScore(): Int = score

无结束符号
Java
int getScore(int value) { // logic here return 2 * value; } >Kotlinfun getScore(value: Int): Int { // logic here return 2 * value }// as a single-expression functionfun getScore(value: Int): Int = 2 * value constructor 构造器 >Javapublic class Utils {private Utils() { // This utility class is not publicly instantiable }public static int getScore(int value) { return 2 * value; }}

Kotlin
class Utils private constructor() {companion object {fun getScore(value: Int): Int { return 2 * value }} }// another wayobject Utils {fun getScore(value: Int): Int { return 2 * value }}

Get Set 构造器
Java
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; } }

Kotlin
data class Developer(val name: String, val age: Int)

最后 给大家分享两份重磅资料:字节跳动内部超高质量Kotlin笔记、谷歌大佬编写高级Kotlin强化实战(附Demo)。
一、字节跳动内部超高质量Kotlin笔记
1.准备开始
  • 基本语法
  • 习惯用语
  • 编码风格
2.基础
  • 基本类型
  • 控制流
  • 返回与跳转
【Android|还不知道Kotlin与Java的异同(看完这篇彻底明白了)】Android|还不知道Kotlin与Java的异同(看完这篇彻底明白了)
文章图片

3.类和对象
  • 类和继承
  • 属性和字段
  • 接口
  • 可见性修饰词
  • 扩展
  • 数据对象
  • 泛型
  • 嵌套类
  • 枚举类
  • 对象表达式和声明
  • 代理模式
  • 代理属性
4.函数和lambda表达式
  • 函数
  • 高阶函数与 lambda 表达式
  • 内联函数
Android|还不知道Kotlin与Java的异同(看完这篇彻底明白了)
文章图片

5.其它
  • 多重申明
  • Ranges
  • 类型检查和自动转换
  • This表达式
  • 等式
  • 运算符重载
  • 空安全
  • 异常
  • 注解
  • 反射
  • 动态类型
6.互用性
  • 动态类型
Android|还不知道Kotlin与Java的异同(看完这篇彻底明白了)
文章图片

7.工具
  • 使用Maven
  • 使用 Ant
  • 使用 Gradle
  • 使用Griffon
8.FAQ
  • 与java对比
  • 与Scala对比
Android|还不知道Kotlin与Java的异同(看完这篇彻底明白了)
文章图片

需要的朋友麻烦动动发财小手点赞支持,然后点击我的GitHub免费获取。 基础知识掌握之后就是靠实战提升了!
二、谷歌大佬编写高级Kotlin强化实战(附Demo)
照样目录乘上:
Android|还不知道Kotlin与Java的异同(看完这篇彻底明白了)
文章图片

第一章 Kotlin入门教程
  • Kotlin 概述
  • Kotlin 与 Java 比较
  • 巧用 Android Studio
  • 认识 Kotlin 基本类型
  • 走进 Kotlin 的数组
  • 走进 Kotlin 的集合
  • 集合问题
  • 完整代码
  • 基础语法
Android|还不知道Kotlin与Java的异同(看完这篇彻底明白了)
文章图片

第二章 Kotlin 实战避坑指南
  • 方法入参是常量,不可修改
  • 不要 Companion 、INSTANCE ?
  • Java 重载,在 Kotlin 中怎么巧妙过渡一下?
  • Kotlin 中的判空姿势
  • Kotlin 复写 Java 父类中的方法
  • Kotlin “狠”起来,连TODO 都不放过!
  • is、as` 中的坑
  • Kotlin 中的 Property 的理解
  • also 关键字
  • takeIf 关键字
  • takeIf 关键字
  • 单例模式的写法
Android|还不知道Kotlin与Java的异同(看完这篇彻底明白了)
文章图片

第三章 项目实战《Kotlin Jetpack 实战》
  • 从一个膜拜大神的 Demo 开始
  • Kotlin 写 Gradle 脚本是一种什么体验?
  • Kotlin 编程的三重境界
  • Kotlin 高阶函数
  • Kotlin 泛型
  • Kotlin 扩展
  • Kotlin 委托
  • 协程“不为人知”的调试技巧
  • 图解协程:suspend
Android|还不知道Kotlin与Java的异同(看完这篇彻底明白了)
文章图片

需要的朋友麻烦动动发财小手点赞支持,然后点击我的GitHub免费获取。

    推荐阅读