还不知道Kotlin与Java的异同?看完这篇彻底明白了
2021/10/9 14:48:43
本文主要是介绍还不知道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<String, String> 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<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");
Kotlin
val listOfNumber = listOf(1, 2, 3, 4) val keyValue = 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 function fun getScore(): Int = score
无结束符号
Java
int getScore(int value) { // logic here return 2 * value; } >Kotlin fun getScore(value: Int): Int { // logic here return 2 * value } // as a single-expression function fun getScore(value: Int): Int = 2 * value constructor 构造器 >Java public 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 way object 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.基础
- 基本类型
- 包
- 控制流
- 返回与跳转
3.类和对象
- 类和继承
- 属性和字段
- 接口
- 可见性修饰词
- 扩展
- 数据对象
- 泛型
- 嵌套类
- 枚举类
- 对象表达式和声明
- 代理模式
- 代理属性
4.函数和lambda表达式
- 函数
- 高阶函数与 lambda 表达式
- 内联函数
5.其它
- 多重申明
- Ranges
- 类型检查和自动转换
- This表达式
- 等式
- 运算符重载
- 空安全
- 异常
- 注解
- 反射
- 动态类型
6.互用性
- 动态类型
7.工具
- 使用Maven
- 使用 Ant
- 使用 Gradle
- 使用Griffon
8.FAQ
- 与java对比
- 与Scala对比
需要的朋友麻烦动动发财小手点赞支持,然后点击我的GitHub免费获取。
基础知识掌握之后就是靠实战提升了!
二、谷歌大佬编写高级Kotlin强化实战(附Demo)
照样目录乘上:
第一章 Kotlin入门教程
- Kotlin 概述
- Kotlin 与 Java 比较
- 巧用 Android Studio
- 认识 Kotlin 基本类型
- 走进 Kotlin 的数组
- 走进 Kotlin 的集合
- 集合问题
- 完整代码
- 基础语法
第二章 Kotlin 实战避坑指南
- 方法入参是常量,不可修改
- 不要 Companion 、INSTANCE ?
- Java 重载,在 Kotlin 中怎么巧妙过渡一下?
- Kotlin 中的判空姿势
- Kotlin 复写 Java 父类中的方法
- Kotlin “狠”起来,连TODO 都不放过!
- is、as` 中的坑
- Kotlin 中的 Property 的理解
- also 关键字
- takeIf 关键字
- takeIf 关键字
- 单例模式的写法
第三章 项目实战《Kotlin Jetpack 实战》
- 从一个膜拜大神的 Demo 开始
- Kotlin 写 Gradle 脚本是一种什么体验?
- Kotlin 编程的三重境界
- Kotlin 高阶函数
- Kotlin 泛型
- Kotlin 扩展
- Kotlin 委托
- 协程“不为人知”的调试技巧
- 图解协程:suspend
需要的朋友麻烦动动发财小手点赞支持,然后点击我的GitHub免费获取。
这篇关于还不知道Kotlin与Java的异同?看完这篇彻底明白了的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南