Kotlin 基本數(shù)據(jù)類(lèi)型(三)

Kotlin 基本數(shù)據(jù)類(lèi)型(三)

上一次大家學(xué)會(huì)了創(chuàng)建你的第一個(gè)Kotlin應(yīng)用 Kotlin 快速創(chuàng)建您的第一個(gè)應(yīng)用(二)

Kotlin 基本數(shù)據(jù)類(lèi)型:

Kotlin 的基本數(shù)值類(lèi)型包括 Byte铜邮、Short旧困、Int莺禁、Long、Float幢哨、Double 等赡勘。不同于Java的是,字符不屬于數(shù)值類(lèi)型捞镰,是一個(gè)獨(dú)立的數(shù)據(jù)類(lèi)型闸与。

類(lèi)型        位寬度         字節(jié)對(duì)應(yīng)
Double         64            8個(gè)字節(jié)
Float          32            4個(gè)字節(jié)
Long           64            8個(gè)字節(jié)
Int            32            4個(gè)字節(jié)
Short          16            2個(gè)字節(jié)
Byte           8             1個(gè)字節(jié)

字面常量:

下面是所有類(lèi)型的字面常量:

  • 十進(jìn)制:123
  • 長(zhǎng)整型以大寫(xiě)的 L 結(jié)尾:123L
  • 16 進(jìn)制以 0x 開(kāi)頭:0x0F
  • 2 進(jìn)制以 0b 開(kāi)頭:0b00001011
  • 注意:8進(jìn)制不支持

Kotlin 同時(shí)也支持傳統(tǒng)符號(hào)表示的浮點(diǎn)數(shù)值:

  • Doubles 默認(rèn)寫(xiě)法: 123.5, 123.5e10
  • Floats 使用 f 或者 F 后綴:123.5f

你可以使用下劃線使數(shù)字常量更易讀:

    val oneMillion = 1_000_000
    val creditCardNumber = 1234_5678_9012_3456L
    val socialSecurityNumber = 999_99_9999L
    val hexBytes = 0xFF_EC_DE_5E
    val bytes = 0b11010010_01101001_10010100_10010010

類(lèi)型的比較:

Kotlin 中沒(méi)有基礎(chǔ)數(shù)據(jù)類(lèi)型,只有封裝的數(shù)字類(lèi)型岸售,你每定義的一個(gè)變量践樱,其實(shí) Kotlin 幫你封裝了一個(gè)對(duì)象,這樣可以保證不會(huì)出現(xiàn)空指針凸丸。數(shù)字類(lèi)型也一樣拷邢,所有在比較兩個(gè)數(shù)字的時(shí)候,就有比較數(shù)據(jù)大小和比較兩個(gè)對(duì)象是否相同的區(qū)別了甲雅。

在 Kotlin 中解孙,三個(gè)等號(hào) === 表示比較對(duì)象地址坑填,兩個(gè) == 表示比較兩個(gè)值大小抛人。不同類(lèi)型能不能比較呢? 當(dāng)然是不能拉脐瑰,不過(guò)類(lèi)型是可以轉(zhuǎn)換的后面會(huì)說(shuō).

類(lèi)型轉(zhuǎn)換:

由于不同的表示方式妖枚,較小類(lèi)型并不是較大類(lèi)型的子類(lèi)型,較小的類(lèi)型不能隱式轉(zhuǎn)換為較大的類(lèi)型苍在。 這意味著在不進(jìn)行顯式轉(zhuǎn)換的情況下我們不能把 Byte 型值賦給一個(gè) Int 變量绝页。

我們可以代用其toInt()方法荠商。

每種數(shù)據(jù)類(lèi)型都有下面的這些方法,可以轉(zhuǎn)化為其它的類(lèi)型:

    toByte(): Byte
    toShort(): Short
    toInt(): Int
    toLong(): Long
    toFloat(): Float
    toDouble(): Double
    toChar(): Char

有些情況下也是可以使用自動(dòng)類(lèi)型轉(zhuǎn)化的续誉,前提是可以根據(jù)上下文環(huán)境推斷出正確的數(shù)據(jù)類(lèi)型而且數(shù)學(xué)操作符會(huì)做相應(yīng)的重載莱没。例如下面是正確的:

位操作符:

對(duì)于Int和Long類(lèi)型,還有一系列的位操作符可以使用酷鸦,分別是:

shl(bits) – 左移位 (Java’s <<)
shr(bits) – 右移位 (Java’s >>)
ushr(bits) – 無(wú)符號(hào)右移位 (Java’s >>>)
and(bits) – 與
or(bits) – 或
xor(bits) – 異或
inv() – 反向

字符

和 Java 不一樣饰躲,Kotlin 中的 Char 不能直接和數(shù)字操作,Char 必需是單引號(hào)''包含起來(lái)的臼隔。比如普通字符 '0'嘹裂,'a'。

字符字面值用單引號(hào)括起來(lái): '1'摔握。 特殊字符可以用反斜杠轉(zhuǎn)義寄狼。 支持這幾個(gè)轉(zhuǎn)義序列:\t、 \b氨淌、\n泊愧、\r、'宁舰、"拼卵、\ 和 $。 編碼其他字符要用 Unicode 轉(zhuǎn)義序列語(yǔ)法:'\uFF00'蛮艰。

我們可以顯式把字符轉(zhuǎn)換為 Int 數(shù)字:

fun decimalDigitValue(c: Char): Int {
    if (c !in '0'..'9')
        throw IllegalArgumentException("Out of range")
    return c.toInt() - '0'.toInt() // 顯式轉(zhuǎn)換為數(shù)字
}

當(dāng)需要可空引用時(shí)腋腮,像數(shù)字、字符會(huì)被裝箱壤蚜。裝箱操作不會(huì)保留同一性即寡。

布爾

布爾用 Boolean 類(lèi)型表示,它有兩個(gè)值:true 和 false袜刷。

若需要可空引用布爾會(huì)被裝箱聪富。

內(nèi)置的布爾運(yùn)算有:

||     短路邏輯或
&&    短路邏輯與
!    邏輯非

數(shù)組

數(shù)組用類(lèi) Array 實(shí)現(xiàn),并且還有一個(gè) size 屬性及 get 和 set 方法著蟹,由于使用 [] 重載了 get 和 set 方法墩蔓,所以我們可以通過(guò)下標(biāo)很方便的獲取或者設(shè)置數(shù)組對(duì)應(yīng)位置的值。

數(shù)組的創(chuàng)建多種方式:可以是使用函數(shù)arrayOf()萧豆;也可以是使用工廠函數(shù),還可以創(chuàng)建空數(shù)組奸披,只讀,還可以創(chuàng)建指定長(zhǎng)度的可空數(shù)組涮雷,如下所示阵面,我們分別創(chuàng)建了不同 的數(shù)組:


字符串

和 Java 一樣,String 是可不變的。方括號(hào) [] 語(yǔ)法可以很方便的獲取字符串中的某個(gè)字符样刷,也可以通過(guò) for 循環(huán)來(lái)遍歷:

for (c in str) {
    println(c)
}

Kotlin 支持三個(gè)引號(hào) """ 擴(kuò)起來(lái)的字符串仑扑,支持多行字符串,比如:

當(dāng)然這種輸出可能會(huì)有一些前置空格置鼻,不過(guò)我們可以通過(guò)String 通過(guò) trimMargin() 方法來(lái)刪除多余的空白镇饮。

默認(rèn) | 用作邊界前綴,但你可以選擇其他字符并作為參數(shù)傳入箕母,比如 trimMargin(">")盒让。

我從小就愛(ài)學(xué)習(xí)

寫(xiě)在后面:

今天我們學(xué)習(xí)完了Kotlin 的基本數(shù)據(jù)類(lèi)型,下一篇我們講Kotlin的語(yǔ)法司蔬,今天是2018第一天邑茄,元?dú)鉂M滿祝大家今年登上高峰!Goodbye俊啼!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肺缕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子授帕,更是在濱河造成了極大的恐慌同木,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跛十,死亡現(xiàn)場(chǎng)離奇詭異彤路,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)芥映,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)洲尊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人奈偏,你說(shuō)我怎么就攤上這事坞嘀。” “怎么了惊来?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵丽涩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我裁蚁,道長(zhǎng)矢渊,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任枉证,我火速辦了婚禮矮男,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘刽严。我一直安慰自己昂灵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布舞萄。 她就那樣靜靜地躺著眨补,像睡著了一般。 火紅的嫁衣襯著肌膚如雪倒脓。 梳的紋絲不亂的頭發(fā)上撑螺,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音崎弃,去河邊找鬼甘晤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛饲做,可吹牛的內(nèi)容都是我干的线婚。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼盆均,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼塞弊!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起泪姨,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤游沿,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后肮砾,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體诀黍,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年仗处,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了眯勾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡婆誓,死狀恐怖咒精,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旷档,我是刑警寧澤模叙,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站鞋屈,受9級(jí)特大地震影響范咨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜厂庇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一渠啊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧权旷,春花似錦替蛉、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)它浅。三九已至,卻和暖如春镣煮,著一層夾襖步出監(jiān)牢的瞬間姐霍,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工典唇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留镊折,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓介衔,卻偏偏與公主長(zhǎng)得像恨胚,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子炎咖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容