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也是无奈之举,既然是潮流,谷歌也在大力推广,所以还是只能硬着头皮逼迫自己学一下,也能更快适应公司 ...
最新文章
- 字符转换指令tr,col,expand
- sample 算子_Spark----RDD及算子
- mongoose框架示例代码解析(一)
- python基础知识点-Python基础中的29个知识点
- 线性回归csv数据集_数据科学的基石:统计学、机器学习、计算机科学(三)——线性回归...
- cn域名注册十元_网站域名查询、域名注册流程详解
- boost::geometry::model::d3::point_xyz用法的测试程序
- [功能发布]Excel与PowerBI互通互联升级版连接SSAS和AzureAS
- Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine)) A-F全题解
- OC中语法糖,最新语法总结
- Google的银河英雄传说
- 说人话很难。。。。。。
- 解读Depth Map Prediction from a Single Image using a Multi-Scale Deep Network (7)
- 如何申请CSDN博客专栏
- 【AppStore排行榜游戏安利】目录
- 一个简单的百度爬虫实例
- java unicode 转换_Java unicode中文编码转换和反转
- WLAN射频和信道--总结记录
- 2014cad运行要计算机内,win7系统2014cad出现致命错误的解决方法
- 管理员发布小程序,却显示自己不是项目成员
热门文章
- 循环队列求元素个数为什么为(rear-front+maxSize)%maxSize?
- v.douyin.com/xxx抖音网址官方生成制作抖音缩短口令网址php接口方法
- SpringBoot + uni-app开发企业级图书商城系统
- android主题切换框架,Prism(棱镜)——一款优秀的Android 主题动态切换框架
- gnuplot绘图教程(一)
- CCF201809-4 再卖菜(100分)
- Canvas 和 SVG 的区别是什么?
- 这才是索罗斯暴富的真实秘密
- 第二十四篇:SuperSpeed/HighSpeed USB的ISO传输
- 蓝牙设备类型cod(蓝牙class of device介绍)