Kotlin对比Java编程语言其优势有哪些

本篇内容介绍了“Kotlin对比Java编程语言其优势有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

成都创新互联是专业的民和网站建设公司,民和接单;提供成都做网站、成都网站制作、成都外贸网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行民和网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

new个对象

new一个对象,是我们在编程中最常用的操作之一,让我们先看下如何在Java中new一个对象。

List<String> list =new ArrayList<String>(); list.add("hello world");

在Java中,我们需要定义一个变量,然后通过new关键字声明一个ArrayList的示例,这样我们就可以使用他了。

但是在Kotlin,new一个对象会更简洁。

var list:ArrayList<String> = ArrayList<String>()

直接省略了new关键字即可。

类型推断

对于以上的Kotlin代码,我们完全可以省略掉变量:后面的类型声明,因为kotlin可以自己推断出来。

val list = ArrayList<String>()

是不是觉得更简洁了?我们开发的效率也更高了。

空指针安全

在Java中,变量,方法的参数等都是可以为null的,但是在Kotlin中默认是不允许的,通过这种强制的限制,更好的避免空指针异常。

var list = ArrayList<String>() list = null

以上代码,在编译期你会得到一个错误提示:

Null can not be a value of a non-null type ArrayList<String>

如果我们的确需要null赋值怎么做呢?在Kotlin中需要开发者自己显示声明才可以。

var list:Array<String>? = null

如上所示,在类型后加?即可。但是注意,我们不提倡这种做法,在实际的开发中,你会发现?大部分都是为了兼容Java代码使用的。

属性

我们通常会把数据和对数据的处理封装到一个类中,如果类中有私有字段,我们还需要提供getter和setter方法提供访问和修改字段的方法。

//Person.java public  class Person {   private String name;    public String getName() {     return name;   }    public void setName(String name) {     this.name = name;   } } //Main.java public static void main(String[] args) {   Person p = new Person();   p.setName("张三");   System.out.println(p.getName()); }

以上是我们通过Java实现的一个Person类,并且定义了name私有字段,同时提供了getter和setter方法,这样我们才能够使用它。

通过以上代码,大家可以看到,我们为了实现一个name的存储,写了很多代码,如果一个类存在很多字段,我们会写更多的不必要的getter和setter方法。

现在我们看在Kotlin中如何实现上面的功能。

//Person.kt class Person {   var name:String = "" }  //main.kt fun main(){   val p = Person()   p.name = "张三"   println(p.name) }

是的,就是这么简单,只需要这么几行代码,就可以实现和Java一样的功能,因为Kotlin可以帮我们自动的生成getter和setter这些模板代码,就省了我们很多事情,大大的提高了我们的开发效率,并且整个代码也更简洁。

这里需要注意的是,如果字段是val声明的,那么只会生成getter方法,因为val是不可修改的,等价于Java中的final修饰符;如果字段是var的,可以同时生成getter和setter方法,这时候就可以对字段赋值了。

数据类

Kotlin的简洁不仅仅体现在getter和setter方法上,还有数据类。一个数据类是一个数据容器,它用来存放数据。

一个好的数据类的声明,不仅有私有的字段、getter和setter方法,还要有toString、equals和hashCode方法的实现,以便对他们进行打印、比较以及更好的储存在map中。

还是以Person类为例,一个合格的数据类代码如下:

public static  class Person {   private String name;    public Person(String name) {     this.name = name;   }    public String getName() {     return name;   }    public void setName(String name) {     this.name = name;   }    @Override   public boolean equals(Object o) {     if (this == o) return true;     if (o == null || getClass() != o.getClass()) return false;      Person person = (Person) o;      return Objects.equals(name, person.name);   }    @Override   public int hashCode() {     return name != null ? name.hashCode() : 0;   }    @Override   public String toString() {     return "Person{" +       "name='" + name + '\'' +       '}';   } }

看下我们Java的实现,需要有这么30多行代码才能实现。如果我们使用Kotlin会是怎样的呢?

data class Person(val name: String) {}

只需要这么一行代码,以上的Java功能都会实现,这里的关键在于一个data修饰符,是不是很酸爽。

并发

Kotlin提供了协程来实现并发,相比Java的Thread和Executor等来说,它更轻便,简洁。我们对比下并发的基本实现。

public static void main(String[] args) throws InterruptedException {   new MyThread().start();   System.out.println(Thread.currentThread().getName()+":main");   //保证JVM存活   Thread.sleep(1000); }  private static class MyThread extends Thread{   @Override   public void run() {     try {       Thread.sleep(500);       System.out.println(Thread.currentThread().getName()+":Thread");     } catch (InterruptedException e) {       e.printStackTrace();     }   } }

运行查看输出,我们发现MyThread并没有阻塞main的执行,也就是并发了。

main:main Thread-0:Thread

但是要注意到,Java使用了两个线程,一个是main,一个是Thread-0。同样的功能,我们现在使用kotlin实现下:

fun main(){   runBlocking {     launch {       delay(500)       println("${Thread.currentThread().name}:Thread")     }     println("${Thread.currentThread().name}:main")   } }

相比Java来说更简洁,而且我们看下打印的输出:

main:main main:Thread

竟然是在同一个线程上实现的并发,少了一个线程的申请开销,效率更高,这也是kotlin提出协程的概念。如果我们不想让它在main线程上执行,可以通过切换调度器来实现。

launch(Dispatchers.IO)

只需要把上面的代码的launch换成launch(Dispatchers.IO)即可,这样调度器就给我们分配了一个IO的线程池来执行我们的代码。如果我们使用Java来实现,要自己定义线程池,还要提交Runnable,整个代码是非常多的。

main:main DefaultDispatcher-worker-1:Thread

kotlin的协程非常强大和简洁,通过以上的例子,不能完全展示它的特性,剩下的如协程上下文、调度器、Flow、通道等能力大家可以自己摸索。

“Kotlin对比Java编程语言其优势有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!

网站名称:Kotlin对比Java编程语言其优势有哪些
网站链接:https://www.cdcxhl.com/article20/iijjjo.html

成都网站建设公司_创新互联,为您提供网站建设软件开发品牌网站建设响应式网站网站收录网站营销

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司