欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Kotlin對(duì)比Java編程語(yǔ)言其優(yōu)勢(shì)有哪些

本篇內(nèi)容介紹了“Kotlin對(duì)比Java編程語(yǔ)言其優(yōu)勢(shì)有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)是專(zhuān)業(yè)的民和網(wǎng)站建設(shè)公司,民和接單;提供成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行民和網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

new個(gè)對(duì)象

new一個(gè)對(duì)象,是我們?cè)诰幊讨凶畛S玫牟僮髦?,讓我們先看下如何在Java中new一個(gè)對(duì)象。

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

在Java中,我們需要定義一個(gè)變量,然后通過(guò)new關(guān)鍵字聲明一個(gè)ArrayList的示例,這樣我們就可以使用他了。

但是在Kotlin,new一個(gè)對(duì)象會(huì)更簡(jiǎn)潔。

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

直接省略了new關(guān)鍵字即可。

類(lèi)型推斷

對(duì)于以上的Kotlin代碼,我們完全可以省略掉變量:后面的類(lèi)型聲明,因?yàn)閗otlin可以自己推斷出來(lái)。

val list = ArrayList<String>()

是不是覺(jué)得更簡(jiǎn)潔了?我們開(kāi)發(fā)的效率也更高了。

空指針安全

在Java中,變量,方法的參數(shù)等都是可以為null的,但是在Kotlin中默認(rèn)是不允許的,通過(guò)這種強(qiáng)制的限制,更好的避免空指針異常。

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

以上代碼,在編譯期你會(huì)得到一個(gè)錯(cuò)誤提示:

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

如果我們的確需要null賦值怎么做呢?在Kotlin中需要開(kāi)發(fā)者自己顯示聲明才可以。

var list:Array<String>? = null

如上所示,在類(lèi)型后加?即可。但是注意,我們不提倡這種做法,在實(shí)際的開(kāi)發(fā)中,你會(huì)發(fā)現(xiàn)?大部分都是為了兼容Java代碼使用的。

屬性

我們通常會(huì)把數(shù)據(jù)和對(duì)數(shù)據(jù)的處理封裝到一個(gè)類(lèi)中,如果類(lèi)中有私有字段,我們還需要提供getter和setter方法提供訪問(wèn)和修改字段的方法。

//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()); }

以上是我們通過(guò)Java實(shí)現(xiàn)的一個(gè)Person類(lèi),并且定義了name私有字段,同時(shí)提供了getter和setter方法,這樣我們才能夠使用它。

通過(guò)以上代碼,大家可以看到,我們?yōu)榱藢?shí)現(xiàn)一個(gè)name的存儲(chǔ),寫(xiě)了很多代碼,如果一個(gè)類(lèi)存在很多字段,我們會(huì)寫(xiě)更多的不必要的getter和setter方法。

現(xiàn)在我們看在Kotlin中如何實(shí)現(xiàn)上面的功能。

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

是的,就是這么簡(jiǎn)單,只需要這么幾行代碼,就可以實(shí)現(xiàn)和Java一樣的功能,因?yàn)镵otlin可以幫我們自動(dòng)的生成getter和setter這些模板代碼,就省了我們很多事情,大大的提高了我們的開(kāi)發(fā)效率,并且整個(gè)代碼也更簡(jiǎn)潔。

這里需要注意的是,如果字段是val聲明的,那么只會(huì)生成getter方法,因?yàn)関al是不可修改的,等價(jià)于Java中的final修飾符;如果字段是var的,可以同時(shí)生成getter和setter方法,這時(shí)候就可以對(duì)字段賦值了。

數(shù)據(jù)類(lèi)

Kotlin的簡(jiǎn)潔不僅僅體現(xiàn)在getter和setter方法上,還有數(shù)據(jù)類(lèi)。一個(gè)數(shù)據(jù)類(lèi)是一個(gè)數(shù)據(jù)容器,它用來(lái)存放數(shù)據(jù)。

一個(gè)好的數(shù)據(jù)類(lèi)的聲明,不僅有私有的字段、getter和setter方法,還要有toString、equals和hashCode方法的實(shí)現(xiàn),以便對(duì)他們進(jìn)行打印、比較以及更好的儲(chǔ)存在map中。

還是以Person類(lèi)為例,一個(gè)合格的數(shù)據(jù)類(lèi)代碼如下:

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的實(shí)現(xiàn),需要有這么30多行代碼才能實(shí)現(xiàn)。如果我們使用Kotlin會(huì)是怎樣的呢?

data class Person(val name: String) {}

只需要這么一行代碼,以上的Java功能都會(huì)實(shí)現(xiàn),這里的關(guān)鍵在于一個(gè)data修飾符,是不是很酸爽。

并發(fā)

Kotlin提供了協(xié)程來(lái)實(shí)現(xiàn)并發(fā),相比Java的Thread和Executor等來(lái)說(shuō),它更輕便,簡(jiǎn)潔。我們對(duì)比下并發(fā)的基本實(shí)現(xiàn)。

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();     }   } }

運(yùn)行查看輸出,我們發(fā)現(xiàn)MyThread并沒(méi)有阻塞main的執(zhí)行,也就是并發(fā)了。

main:main Thread-0:Thread

但是要注意到,Java使用了兩個(gè)線程,一個(gè)是main,一個(gè)是Thread-0。同樣的功能,我們現(xiàn)在使用kotlin實(shí)現(xiàn)下:

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

相比Java來(lái)說(shuō)更簡(jiǎn)潔,而且我們看下打印的輸出:

main:main main:Thread

竟然是在同一個(gè)線程上實(shí)現(xiàn)的并發(fā),少了一個(gè)線程的申請(qǐng)開(kāi)銷(xiāo),效率更高,這也是kotlin提出協(xié)程的概念。如果我們不想讓它在main線程上執(zhí)行,可以通過(guò)切換調(diào)度器來(lái)實(shí)現(xiàn)。

launch(Dispatchers.IO)

只需要把上面的代碼的launch換成launch(Dispatchers.IO)即可,這樣調(diào)度器就給我們分配了一個(gè)IO的線程池來(lái)執(zhí)行我們的代碼。如果我們使用Java來(lái)實(shí)現(xiàn),要自己定義線程池,還要提交Runnable,整個(gè)代碼是非常多的。

main:main DefaultDispatcher-worker-1:Thread

kotlin的協(xié)程非常強(qiáng)大和簡(jiǎn)潔,通過(guò)以上的例子,不能完全展示它的特性,剩下的如協(xié)程上下文、調(diào)度器、Flow、通道等能力大家可以自己摸索。

“Kotlin對(duì)比Java編程語(yǔ)言其優(yōu)勢(shì)有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

網(wǎng)站名稱(chēng):Kotlin對(duì)比Java編程語(yǔ)言其優(yōu)勢(shì)有哪些
網(wǎng)站鏈接:http://aaarwkj.com/article20/iijjjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、軟件開(kāi)發(fā)、品牌網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、網(wǎng)站收錄、網(wǎng)站營(yíng)銷(xiāo)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司
日日激情综合久久一区| 国产男女爱猛视频在线| 亚洲av毛片在线免费播放| 日韩色图在线观看视频| 人妻人人澡人人添人人爽桃色| 欧美午夜福利视频网址| 国产专区亚洲精品欧美| 欧美日本国产老熟女视频| 日韩精品一区高清视频| 麻豆视频传媒入口在线播放| 91日韩国产中文字幕| 一区二区三区在线观看日韩| 久草国产免费福利在线视频| 人妻久久一区二区三区精品99| 中文字幕亚洲精品熟女少妇| 日本在线有码中文视频| 国产精品一区二区在线观看| 五月开心婷婷开心五月活动推荐| 欧美亚洲国产另类第一页| 亚洲欧美日韩一区中文字幕| 成人av在线免费播放| 亚洲国产欧美日韩在线不卡成人| 日韩免费av在线网站| 久久亚洲精品中文字幕馆| 麻豆国产国语精品三级在线观看| 欧美国产激情一区二区| 青青草日韩欧美在线观看| 亚洲熟妇人妻一区二区三区| 国产免费av剧情演绎| 日本高清不卡免费在线观看视频一二三区 | 中文字幕日韩乱码一级在线| 国产精品久久久毛片av| 国产胖中年妇女草逼网站| 国产三级传媒视频在线观看| 色婷婷久久综合中文久久| 亚洲一区二区三区在线观看呢| 成人免费亚洲av在线| 中文字幕一区二区三区久久| 91欧美日韩在线观看视频| 尤物视频网站在线观看| 老女人性生交大片免费|