欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Kotlin基礎(chǔ)教程之?dāng)?shù)據(jù)類型

 更新時(shí)間:2017年05月27日 11:18:08   作者:天命劍主  
這篇文章主要介紹了Kotlin基礎(chǔ)教程之?dāng)?shù)據(jù)類型的相關(guān)資料,需要的朋友可以參考下

Kotlin基礎(chǔ)教程之?dāng)?shù)據(jù)類型

一切都是對(duì)象.

在Kotlin中一切都是對(duì)象.Kotlin有一些基本類型Boolean,Byte,Shot,Int,Long,Float,Double

在Kotlin中沒有原始類型,以上這些類型都是對(duì)象,比如


運(yùn)行結(jié)果如下


Kotlin支持16進(jìn)制字面值,二進(jìn)制字面值和科學(xué)記數(shù)法,官方文檔中沒有提到8進(jìn)制

所有基本的幾個(gè)數(shù)據(jù)類型不會(huì)進(jìn)行顯式類型轉(zhuǎn)換,這一點(diǎn)尤為重要!那么如何進(jìn)行轉(zhuǎn)換呢?如下:

可以使用toLong,toInt,toShort,toChar等函數(shù)進(jìn)行轉(zhuǎn)換,不僅如此,數(shù)組Array<>也是對(duì)象,不但可以通過asList函數(shù)轉(zhuǎn)換為L(zhǎng)ist對(duì)象,數(shù)組類甚至包含了一個(gè)用于計(jì)算平均值的average函數(shù).實(shí)際上Kotlin數(shù)組真的很像Collection(雖然Array并沒有實(shí)現(xiàn)Collection接口).數(shù)組類還有其他很多函數(shù),現(xiàn)在初學(xué)Kotlin還并不清楚用途.Kotlin畢竟太新,能找到的教程幾乎只有一本英文的官方文檔.(如果我能學(xué)完的話那么我的這些blog或許也能成為教程.)

我們還看到了一些有趣的東西,比如在字符串中使用${}進(jìn)行替換,字符串中的代碼會(huì)被執(zhí)行,最后的結(jié)果被插入到字符串中,這一點(diǎn)簡(jiǎn)直和Unix Shell腳本里面的替換語(yǔ)法如出一轍,想來Kotlin也是受到了很多語(yǔ)言的啟發(fā).

這段代碼運(yùn)行結(jié)果如下

關(guān)于數(shù)組的初始化,也很有趣,如下:


前面已經(jīng)說過了arrayOf()函數(shù)可以創(chuàng)建一個(gè)數(shù)組,Kotlin自動(dòng)判斷類型,比如x就是Array<String>類型,那么y是什么類型呢?

y最后會(huì)變成Array<Comparable<out Any?>>類型,Comparable是一個(gè)表示"可比較"含義的接口,Any代表任何類型,問號(hào)代表可以為null,雖然暫時(shí)看不懂,不過這并不影響.

除了arrayOf函數(shù),還有intArrayOf,longArrayOf,doubleArrayOf等等函數(shù)

除此之外,Array有自己的構(gòu)造函數(shù),第一個(gè)參數(shù)是數(shù)組元素個(gè)數(shù),第二個(gè)參數(shù)是一個(gè)lambda表達(dá)式或者說一個(gè)函數(shù)或者說一個(gè)迭代器(某種意義上可以看作一樣?xùn)|西),在Kotlin中一定程度上實(shí)現(xiàn)了統(tǒng)一.

lambda或者說迭代器在Kotlin中使用非常普遍,相信大家已經(jīng)深有體會(huì) :-) 經(jīng)??吹侥J(rèn)的那個(gè)it(笑)

運(yùn)行結(jié)果不出所料,如下

iterator從0開始哦!

i.plus(i) 等同于i+i,plus就是加法函數(shù).Kotlin就是通過將操作符與函數(shù)進(jìn)行綁定實(shí)現(xiàn)了操作符重載的功能(這個(gè)以后再看)

除了基本類型,數(shù)組類型,還有其他的類之外,Kotlin還有很多有趣的類型(當(dāng)然他們都是對(duì)象),比如Range就是Kotlin中的一種極其有趣的類型,如下:


Range,顧名思義,就是一個(gè)范圍,這個(gè)函數(shù)第一句代碼定義x為IntRange類型(當(dāng)然也存在DoubleRange,LongRange等),

根據(jù)1.rangeTo(5)我們可以猜測(cè)x就代表1到5這樣一個(gè)范圍,那么這樣的范圍有什么用呢?

很明顯可以用在循環(huán)中(不是所有的Range都可以用在循環(huán)中,要想在循環(huán)中使用Range,必須實(shí)現(xiàn)iterator)

從for(a:Int in x) print("$a\t")一句我們可以看出,Range實(shí)際上可以用來限制循環(huán)控制變量的范圍

這段代碼輸出如下

當(dāng)然對(duì)于Kotlin這樣追求簡(jiǎn)潔到極致的語(yǔ)言,使用val x:IntRange = 1.rangeTo(5)實(shí)在是太麻煩了,

你可以直接使用var y = 1..5 達(dá)到相同的效果,不僅如此,在for循環(huán)中a:Int 也可以簡(jiǎn)化為a

編譯器可以自動(dòng)判斷數(shù)據(jù)類型,其實(shí)在前面的代碼中所有的數(shù)據(jù)類型聲明都可以省略,就像這樣


大多數(shù)變量的類型,編譯器會(huì)自動(dòng)判斷,我之所以把類型寫出來是為了讓諸位更容易看清楚代碼.

如果你仔細(xì)發(fā)現(xiàn)的話,在Kotlin中還有很多簡(jiǎn)化代碼的方法,盡量少敲鍵盤是這個(gè)語(yǔ)言很大的特點(diǎn).

另外,這是我們第一次看到控制流(for循環(huán)),控制流的東西我打算留到后面,畢竟Kotlin的基本語(yǔ)法特性是在太多了(當(dāng)然也是考慮到在控制流之前應(yīng)該先了解操作符,畢竟Kotlin可是支持操作符重載的(笑)).

另外:在Kotlin中Unit類型相當(dāng)于Java中的void,Unit有時(shí)也可以省略.

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • Java中CyclicBarrier的理解與應(yīng)用詳解

    Java中CyclicBarrier的理解與應(yīng)用詳解

    這篇文章主要介紹了Java中CyclicBarrier的理解與應(yīng)用詳解,CyclicBarrier類是JUC框架中的工具類,也是一個(gè)同步輔助裝置:允許多個(gè)線程去等待直到全部線程抵達(dá)了公共的柵欄點(diǎn),需要的朋友可以參考下
    2023-12-12
  • 淺談java String.split丟失結(jié)尾空字符串的問題

    淺談java String.split丟失結(jié)尾空字符串的問題

    下面小編就為大家?guī)硪黄獪\談java String.split丟失結(jié)尾空字符串的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • java字符串拼接與性能分析詳解

    java字符串拼接與性能分析詳解

    在JAVA中拼接兩個(gè)字符串的最簡(jiǎn)便的方式就是使用操作符”+”。如果你用”+”來連接固定長(zhǎng)度的字符串,可能性能上會(huì)稍受影響,但是如果你是在循環(huán)中來”+”多個(gè)串的話,性能將指數(shù)倍的下降,下面我們分析一下JAVA字符串拼接的性能
    2014-01-01
  • Java Hibernate中的持久化類和實(shí)體類關(guān)系

    Java Hibernate中的持久化類和實(shí)體類關(guān)系

    Hibernate是一種Java對(duì)象關(guān)系映射框架,通過持久化類將Java對(duì)象映射到數(shù)據(jù)庫(kù)表中。持久化類需要實(shí)現(xiàn)無參構(gòu)造器、具有標(biāo)識(shí)屬性和使用注解或XML進(jìn)行映射。Hibernate通過Session來管理對(duì)象的狀態(tài),包括臨時(shí)狀態(tài)、持久化狀態(tài)和游離狀態(tài)
    2023-04-04
  • SpringBoot利用觀察者模式實(shí)現(xiàn)聯(lián)動(dòng)更新機(jī)制

    SpringBoot利用觀察者模式實(shí)現(xiàn)聯(lián)動(dòng)更新機(jī)制

    觀察者模式(Observer Pattern)是一種軟件設(shè)計(jì)模式,在許多應(yīng)用系統(tǒng)中,我們經(jīng)常需要處理多個(gè)表之間的關(guān)聯(lián)更新問題,本文將通過一個(gè)具體的案例,介紹如何在Spring Boot項(xiàng)目中利用觀察者模式來優(yōu)雅地解決這一需求,需要的朋友可以參考下
    2024-07-07
  • SpringCloud 微服務(wù)最佳開發(fā)實(shí)踐

    SpringCloud 微服務(wù)最佳開發(fā)實(shí)踐

    本文結(jié)合我們實(shí)際的開發(fā)中遇到的一些問題整理出了一份微服務(wù)開發(fā)的實(shí)踐規(guī)范,對(duì)SpringCloud 微服務(wù)開發(fā)實(shí)踐相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-07-07
  • MybatisPlus中的insert操作詳解

    MybatisPlus中的insert操作詳解

    這篇文章主要介紹了MybatisPlus中的insert操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 詳解Java中的有參構(gòu)造方法與無參構(gòu)造方法

    詳解Java中的有參構(gòu)造方法與無參構(gòu)造方法

    這篇文章主要詳細(xì)介紹了Java中有參構(gòu)造方法與無參構(gòu)造方法,文中有詳細(xì)的代碼示例,讓大家清晰明了的了解到有參構(gòu)造方法與無參構(gòu)造方法、以及應(yīng)用,需要的朋友可以參考下
    2023-06-06
  • java.sql.SQLException:com.mysql.cj.jdbc.Driver報(bào)錯(cuò)問題解決

    java.sql.SQLException:com.mysql.cj.jdbc.Driver報(bào)錯(cuò)問題解決

    這篇文章主要給大家介紹了關(guān)于java.sql.SQLException:com.mysql.cj.jdbc.Driver報(bào)錯(cuò)問題解決的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • 編寫Java代碼對(duì)HDFS進(jìn)行增刪改查操作代碼實(shí)例

    編寫Java代碼對(duì)HDFS進(jìn)行增刪改查操作代碼實(shí)例

    這篇文章主要介紹了Java代碼對(duì)HDFS進(jìn)行增刪改查操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評(píng)論