在这篇博文中呢,我将为大家分享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的异同相关推荐

  1. Kotlin极简教程:第10章 Kotlin与Java互操作

    Kotlin is 100% interoperable with Java™ and Android™ 在前面的章节中,我们已经学习了Kotlin的基础语法.类型系统.泛型与集合类.面向对象与函数式 ...

  2. 开发Android应用用Kotlin还是Java?

    还记得多年前有关Android与iOS孰优孰劣的辩论吗?如今,Kotlin与Java的争论,时常广泛地发生在开发人员之中.不过,由于大家往往关注的是Java所不具备的Kotlin功能,因此他们的结论可 ...

  3. 《From Java To Kotlin》-Kotlin与Java的简单对比

    前言: 原文来自https://github.com/MindorksOpenSource/from-java-to-kotlin 本文也只是简单比较kotlin与java的不同之处,实际学习kotl ...

  4. 【Kotlin】apply 内联扩展函数 ( apply 函数原型 | apply 函数示例 | Kotlin 调用 Java API )

    文章目录 I . 内联扩展函数 apply II . Kotlin 调用 Java API III . apply 内联扩展函数示例 ( 调用 Java API 处理图像 ) I . 内联扩展函数 a ...

  5. kotlin与java对比

    为什么80%的码农都做不了架构师?>>>    kotlin作为一个现代的适用于多平台的静态类型语言越来越受到java开发同学的喜爱,尤其是android开发同学的喜爱,下面从几个方 ...

  6. Kotlin 与 Java有什么区别(最全最新的)

    目录 什么是Kotlin? 什么是Java? 主要区别: Kotlin 的特点 Java的特点 Kotlin 的历史 JAVA的历史 Kotlin 和 Java 的区别 Kotlin 的优势 Java ...

  7. Kotlin与Java之争

    Kotlin \\ Kotlin是一门相对比较新的JVM语言,JetBrains自2011年以来一直在积极地开发. \\ 多年来,该语言在Android社区受到的关注度越来越高,并在Google IO ...

  8. 入门 Kotlin 和 Java 混合开发

    一.前沿 如果你学习过其他的编程语言,你就会发现 Java 的语法很是哆嗦,可是我们为什么没有放弃 Java 这门编程语言呢?因为 JVM 是一个非常好的平台,而且 Java 程序员目前在中国所占的比 ...

  9. kotlin和java差别_Kotlin和Java的常用方法的区别总结

    一.kotlin和java的常用语法区别 1).类.public class.public final class java 1 2public final class User{ } 1 2publ ...

  10. Kotlin和Java混合开发总结(基于Kotlin1.3.0版本)

    我本来是不想学习kotlin的,但是现在的形势,很多公司都在使用kotlin开发,可以说学会kotlin也是无奈之举,既然是潮流,谷歌也在大力推广,所以还是只能硬着头皮逼迫自己学一下,也能更快适应公司 ...

最新文章

  1. 字符转换指令tr,col,expand
  2. sample 算子_Spark----RDD及算子
  3. mongoose框架示例代码解析(一)
  4. python基础知识点-Python基础中的29个知识点
  5. 线性回归csv数据集_数据科学的基石:统计学、机器学习、计算机科学(三)——线性回归...
  6. cn域名注册十元_网站域名查询、域名注册流程详解
  7. boost::geometry::model::d3::point_xyz用法的测试程序
  8. [功能发布]Excel与PowerBI互通互联升级版连接SSAS和AzureAS
  9. Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine)) A-F全题解
  10. OC中语法糖,最新语法总结
  11. Google的银河英雄传说
  12. 说人话很难。。。。。。
  13. 解读Depth Map Prediction from a Single Image using a Multi-Scale Deep Network (7)
  14. 如何申请CSDN博客专栏
  15. 【AppStore排行榜游戏安利】目录
  16. 一个简单的百度爬虫实例
  17. java unicode 转换_Java unicode中文编码转换和反转
  18. WLAN射频和信道--总结记录
  19. 2014cad运行要计算机内,win7系统2014cad出现致命错误的解决方法
  20. 管理员发布小程序,却显示自己不是项目成员

热门文章

  1. 循环队列求元素个数为什么为(rear-front+maxSize)%maxSize?
  2. v.douyin.com/xxx抖音网址官方生成制作抖音缩短口令网址php接口方法
  3. SpringBoot + uni-app开发企业级图书商城系统
  4. android主题切换框架,Prism(棱镜)——一款优秀的Android 主题动态切换框架
  5. gnuplot绘图教程(一)
  6. CCF201809-4 再卖菜(100分)
  7. Canvas 和 SVG 的区别是什么?
  8. 这才是索罗斯暴富的真实秘密
  9. 第二十四篇:SuperSpeed/HighSpeed USB的ISO传输
  10. 蓝牙设备类型cod(蓝牙class of device介绍)