广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java与kotlin详细对比
  • 267
分享到

Java与kotlin详细对比

2024-04-02 19:04:59 267人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。 为什么选择 Kotlin? 简洁: 大大减少样板代码的数量。 安全: 避免

Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。

为什么选择 Kotlin? 简洁: 大大减少样板代码的数量。 安全: 避免空指针异常等整个类的错误。 互操作性: 充分利用 JVM、Android 和浏览器的现有库。 工具友好: 可用任何 Java IDE 或者使用命令行构建。

使用kotlin已经有一段时间了。打算从宏观上做一下java和kotlin的对比。java8虽然也有很多新特性,但是android低版本并不兼容。因此这里以旧版本为例。

kotlin 简介

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源

Kotlin 可以编译成Java字节码,也可以编译成 javascript,方便在没有 JVM 的设备上运行。

易用性

  1. 在语法糖的加持下,kotlin能够用更短的代码实现更多的功能。这是java 无法比拟的。所谓代码量越少,出bug的可能性就越低。
  2. kotlin特有的扩展属性,不再需要java工具类,对开发更加友好。
    比如我们想实现字符串判空操作,在java中需要写一个StringUtil类,这样其他开发同学想实现该功能的时候,可能并不知道已经有人实现了该功能,存在重复造轮子的可能。通过扩展属性,我们可以很方便的看出String类都存在哪些方法。
  3. java中的bean类总是需要使用插件生成setter getter方法。kotlin中的data关键字可以解决这类问题,data类在编译期自动生成getter setter方法。

规范性

工程项目都是需要指定开发规范的。比如变量命名等。在java中,方法重载的时候会生成@Override注解,但是这并不是强制约束的。kotlin的方法采用override关键字进行了强制约束。
再比如TODO。java中的TODO是以注释的形式存在,即使没有实现TODO处的代码,也没什么运行时问题。kotlin的TODO形式如下:


fun main(args: Array<String>) {
    TODO()
}

kotlin TODO的实现


@kotlin.internal.InlineOnly
public inline fun TODO(): Nothing = throw NotImplementedError()

可以看到运行时会抛出异常。
思考:这里为什么不在编译期抛出异常呢?

安全性

java中虽然有@Nullable @NotNull等注解。但是不会在编译期起作用,而是在运行期抛出异常。kotlin在声明变量的时候,可以指定变量是否为空,调用可为空对象时,需要进行空判断。

跨平台

java在jvm的协助下虽然也是跨平台语言,但是不能像kotlin一样可以既可以编译成class字节码,又可以编译成js

编译速度

只有全量编译下,kotlin比java慢。增量编译下,两者几乎没有差距。

其他kotlin特性

懒加载、高阶函数、协程、inline操作符、运算符重载、默认参数等。

到此这篇关于Java与kotlin详细对比的文章就介绍到这了,更多相关Java与kotlin对比内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java与kotlin详细对比

本文链接: https://www.lsjlt.com/news/134394.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java与kotlin详细对比
    在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。 为什么选择 Kotlin? 简洁: 大大减少样板代码的数量。 安全: 避免...
    99+
    2022-11-12
  • Kotlin中?和!!的区别详细对比
    前言 很多同学刚上手使用Kotlin知道它有针对Java NullPointerException的管理,而在Kotlin中?和!!均是和NullPointerExcepti...
    99+
    2022-11-12
  • Kotlin与Java主客观对比的示例分析
    这篇文章将为大家详细讲解有关Kotlin与Java主客观对比的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。KotlinKotlin是一门相对比较新的JVM语言,JetBrains自2011年以来...
    99+
    2023-05-30
    kotlin java
  • Java 类与对象详细
    目录1.类2.对象3.练习 4.练习答案 前言: 早期的Java语言,是面对过程的语言(面向过程指把一个场景分割成一个个的步骤研究),如今的Java已经是面对对象的语言(面向对象指把...
    99+
    2022-11-12
  • java中ArrayList与LinkedList对比详情
     ArrayList,LinkedList都是Collection接口的通用实现方式,两者采用了不用的存储策略,用来适应不同场合的需要。实现方式  ArrayList的内部采用集合的方式存储数据唯一需要注意的是对于容量超过阈值的处理逻辑,数...
    99+
    2023-05-31
    java arraylist linkedlist
  • 详细对比Ember.js和Vue.js
    目录概述为什么要选择框架?Vue.jsEmber.jsEmber.js Vue.js对比总结概述 JavaScript最初是为Web应用程序创建的。但是随着前端技术的发展,大多数开发...
    99+
    2022-11-12
  • Kotlin对象比较注意点示例详解
    目录背景原因另一个问题解决办法结论背景 现有一个StateFlow及其监听 private val stateFlow = MutableStateFlow(kotlin.Pair&...
    99+
    2022-11-13
  • Java对象与Java类的详细介绍
    本篇内容介绍了“Java对象与Java类的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录面向对象是什么Java类什么是类Java...
    99+
    2023-06-20
  • php7和php5的详细对比
    目录PHP7安装两个PHP版本PHP7和PHP5的对决1. 纯php脚本测试2.php数据库操作测试3.PHP框架测试结论PHP7 PHP7正式发布到现在已经一年半了,刚出道就号称比...
    99+
    2022-11-12
  • Kotlin与Java的区别详解
    什么是Kotlin? Kotlin是一种可以在 Java 虚拟机 (JVM) 上运行的开源编程语言。该语言可以在许多平台上运行。 它是一种将面向对象编程 (OOP) 和函数式编程结合...
    99+
    2022-11-12
  • Mybatis详细对比一级缓存与二级缓存
    目录基本要点1、缓存2、一级缓存(默认开启,无法关闭)3、二级缓存4、缓存查询原理基本要点 1、缓存 什么是缓存? 存在内存中的临时数据,我们可以把用户经常查询的数据存放到缓存中,当...
    99+
    2022-11-13
  • 详细对比:zxmind git哪个好?
    随着开源软件的普及,越来越多的人开始了解和使用版本控制工具。Git 是目前最流行的版本控制工具之一,同时也是最受欢迎的开源工具之一。如果你正在寻找一个好用的Git工具,那么你肯定会听说过ZXmind和Git。那么ZXmind和Git哪一个更...
    99+
    2023-10-22
  • 阿里云服务器与云主机详细对比分析
    本文将对阿里云服务器与云主机进行详细的对比分析,帮助读者更好地了解这两者之间的区别,从而选择出最适合自己的产品。我们将在以下几个方面进行比较:硬件配置、操作系统、安全性能、价格、服务保障和灵活性。 阿里云服务器: 阿里云服务器是阿里云提供的...
    99+
    2023-11-18
    阿里 主机 服务器
  • Kotlin对比Java编程语言其优势有哪些
    本篇内容介绍了“Kotlin对比Java编程语言其优势有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!new个对象new一个对象,是我们...
    99+
    2023-06-16
  • C#与VB7的对比详情
    本篇内容主要讲解“C#与VB7的对比详情”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#与VB7的对比详情”吧!一、变量声明C#与VB7的变量基本上是一致的。与VB6不同,VB7在声明变量的同...
    99+
    2023-06-17
  • java中-jar 与nohup的对比
    java中 -jar 与nohup的对比——作为Java程序员,经常会遇到这样一个问题,打个jar包,测试或者上线生产,于是乎面临的选择来了,java –jar or nohup? 下面我来扒一扒:一、  &n...
    99+
    2023-05-31
    java jar nohup
  • 【Java框架】 Hibernate与Mybatis对比
    Hibernate与Mybatis对比    今天同事跟我说现在的小规模公司很少用hibernate,大部分都用mybatis。平时也经常接触这两方面,正好最近不怎么...
    99+
    2022-10-18
  • GoLangstring与strings.Builder使用对比详解
    目录一、strings.Builder的优势二、string类型的值三、与string相比Builder的优势体现在拼接方面3.1 Builder的拼接与Builder的自动扩容3....
    99+
    2023-03-19
    Go string与strings.Builder Go strings.Builder使用
  • java 中Comparable与Comparator详解与比较
    java 中Comparable与Comparator详解今天查看TreeMap的源码,发现其键必须是实现Comparable或者Comparator的接口时产生了一些兴趣,比如在TreeMap中的put方法分别对Comparable和Co...
    99+
    2023-05-31
    java comparable comparator
  • Python详细对比讲解break和continue区别
    目录前言break例子continue例子对比前言 最近在回答问答python区的问题的时候,发现很多人对于这个break和continue分不清。所以,今天我就写篇文章来讲一下(绝...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作