Kotlin与Java的异同
在这篇博文中呢,我将为大家分享Kotlin与Java上的主要异同,希望能够帮助到各位小伙伴快速上手Kotlin开发。
打印日志
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 herereturn score;
}
Kotlin
fun getScore(): Int {// logic herereturn score
}// as a single-expression functionfun getScore(): Int = score
无结束符号
Java
int getScore(int value) {// logic herereturn 2 * value;
}
Kotlin
fun getScore(value: Int): Int {// logic herereturn 2 * value
}// as a single-expression functionfun 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 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与Java的异同相关推荐
- Kotlin极简教程:第10章 Kotlin与Java互操作
Kotlin is 100% interoperable with Java™ and Android™ 在前面的章节中,我们已经学习了Kotlin的基础语法.类型系统.泛型与集合类.面向对象与函数式 ...
- 开发Android应用用Kotlin还是Java?
还记得多年前有关Android与iOS孰优孰劣的辩论吗?如今,Kotlin与Java的争论,时常广泛地发生在开发人员之中.不过,由于大家往往关注的是Java所不具备的Kotlin功能,因此他们的结论可 ...
- 《From Java To Kotlin》-Kotlin与Java的简单对比
前言: 原文来自https://github.com/MindorksOpenSource/from-java-to-kotlin 本文也只是简单比较kotlin与java的不同之处,实际学习kotl ...
- 【Kotlin】apply 内联扩展函数 ( apply 函数原型 | apply 函数示例 | Kotlin 调用 Java API )
文章目录 I . 内联扩展函数 apply II . Kotlin 调用 Java API III . apply 内联扩展函数示例 ( 调用 Java API 处理图像 ) I . 内联扩展函数 a ...
- kotlin与java对比
为什么80%的码农都做不了架构师?>>> kotlin作为一个现代的适用于多平台的静态类型语言越来越受到java开发同学的喜爱,尤其是android开发同学的喜爱,下面从几个方 ...
- Kotlin 与 Java有什么区别(最全最新的)
目录 什么是Kotlin? 什么是Java? 主要区别: Kotlin 的特点 Java的特点 Kotlin 的历史 JAVA的历史 Kotlin 和 Java 的区别 Kotlin 的优势 Java ...
- Kotlin与Java之争
Kotlin \\ Kotlin是一门相对比较新的JVM语言,JetBrains自2011年以来一直在积极地开发. \\ 多年来,该语言在Android社区受到的关注度越来越高,并在Google IO ...
- 入门 Kotlin 和 Java 混合开发
一.前沿 如果你学习过其他的编程语言,你就会发现 Java 的语法很是哆嗦,可是我们为什么没有放弃 Java 这门编程语言呢?因为 JVM 是一个非常好的平台,而且 Java 程序员目前在中国所占的比 ...
- kotlin和java差别_Kotlin和Java的常用方法的区别总结
一.kotlin和java的常用语法区别 1).类.public class.public final class java 1 2public final class User{ } 1 2publ ...
- Kotlin和Java混合开发总结(基于Kotlin1.3.0版本)
我本来是不想学习kotlin的,但是现在的形势,很多公司都在使用kotlin开发,可以说学会kotlin也是无奈之举,既然是潮流,谷歌也在大力推广,所以还是只能硬着头皮逼迫自己学一下,也能更快适应公司 ...
最新文章
- 【风控术语】数字金融反欺诈技术名词表
- [数据库] Navicat for Oracle基本用法图文介绍
- c语言中英文翻译 毕业设计,c语言中英文翻译资料 本科毕业论文设计.doc
- pygame 学习check_event,game_function,alien_invasion等程序
- centos8安装mysql_CentOS8+FreeRadius+Mysql8.0+daloRadius建立Radius服务器
- 如何使用mock应对测试所需随机数据
- 【Java】MANIFEST.MF是什么
- js系列教程12-浏览器存储全解
- Keil5最新注册机到2032
- bulk insert 总结
- 怎么卸载Office2007兼容包?
- labview高级视频150讲下载_视频剪辑篇|讲真的,这些软件素材资源我真舍不得分享!(附下载包)...
- 论文-公式对齐和右侧自动编号
- python学习答案_乐学Python答案
- 哈尔滨学院Day2--A The Puzzle
- android网络权限动态,Android权限详解(含6.0动态申请)
- 利用Python爬取拉勾网招聘信息
- Deep-learning augmented RNA-seq analysis of transcript splicing | 用深度学习预测可变剪切
- AT32驱动TFT LCD显示示例
- [emWin]利用内存设备加速GIF图片显示——2021.03
热门文章
- android 电子签名设备,Android 电子签名制作
- java的web开发之旅——第1站html
- 银行卡号码校验算法(Luhn算法,又叫模10算法)
- 了解Java对象(抽象和具体)
- sublime text3 unicode 中文转换
- Qt5.12.6 + VS2019添加图片资源文件
- 古代十二时辰,时辰,时辰对照表,十二时辰与时间对照表,12时辰,时辰表
- matlab连续时间系统复频域分析,连续系统的复频域分析
- 牛逼哄哄的对象深复制
- 【Fuzzy】模糊专家系统(1)