Kotlin教程之基本數(shù)據(jù)類型
Kotlin教程之基本數(shù)據(jù)類型的學習
基本類型
我們知道java的基本類型分為基本數(shù)據(jù)類型:
- int 普通整型
- float 浮點型
- char 字符型
- short 短整型
- byte 字節(jié)型
- long 長整型
- double 雙精度
- boolean 布爾型
和引用數(shù)據(jù)類型:
- class Type 類類型
- interface Type 接口類型
- array Type 數(shù)組類型
- null Type 空類型
在 Kotlin 中,所有變量的成員方法和屬性都是一個對象。一些類型是內建的,因為它們的實現(xiàn)是優(yōu)化過的,但對用戶來說它們就像普通的類一樣。在這篇中,我們將會講到大多數(shù)的類型:數(shù)值,字符,布爾,以及數(shù)組。
Kotlin 的 數(shù)值類型
Kotlin 處理數(shù)值的方法和 java 很相似。比如,不存在隱式轉換數(shù)值的寬度,并且在字面上有一些小小的不同。
Kotlin 提供了如下內建數(shù)值類型(和 java 很相似):
不知道你注意了沒有:字符在 Kotlin 中不是數(shù)值類型
Kotlin 的 數(shù)值類型 的使用
數(shù)值類型的聲明
1 .變量定義
var <標識符> : <類型> = <初始化值>
常量定義
val <標識符> : <類型> = <初始化值>
可變變量,使用var修飾;不可變的變量(類似于Java中的final),使用val修飾。而在變量類型后使用了問號,表示這個變量是空指針安全的
2 .類型推導
你可能在其他語言中看到過類型推導。在 Java 里,我們需要自己聲明類型,變量名,以及數(shù)值。在 Kotlin 里,順序有些不一樣,你先聲明變量名,然后是類型,然后是分配值。很多情況下,你不需要聲明類型。一個字符串字面量足以指明這是個字符串類型。字符,整形,長整形,單浮點數(shù),雙浮點數(shù),布爾值都是可以無需顯性聲明類型的。
var string: String = "" var string = "" var char = ' ' var int = 1 var long = 0L var float = 0F var double = 0.0
只要 Kotlin 可以推導,這個規(guī)則同樣適用與其他一些類型。通常,如果是局部變量,當你在聲明一個值或者變量的時候你不需要指明類型。在一些無法推導的場景里,你才需要用完整的聲明變量語法指明變量類型。
看到var 你是否聯(lián)想到了我們在js開發(fā)中的變量聲明,是不是感覺又從陌生回到了熟悉的面孔,那還在等什么趕快加入到學習的行列吧。
代碼中使用聲明:
val a: Int? = 10000 val b: Long? = a var f: Float? = 0F var d: Double? = 0.0
使用中轉型注意:
顯式轉換
由于不同的表示,短類型不是長類型的子類型。如果是的話我們就會碰到下面這樣的麻煩了
//這是些偽代碼,不能編譯的 val a: Int? =1 //一個裝箱過的 Int (java.lang.Integer) val b: Long? = a // 一個隱式裝箱的 Long (java.lang.Long) pritn ( a == b )// 很驚訝吧 這次打印出的是 'false'
因此特性甚至值都會悄悄丟失掉
所以,短類型是不會隱式轉換為長類型的。這意味著我們必須顯式轉換才能把 Byte 賦值給 Int
val b: Byte = 1 // OK, literals are checked statically val i: Int = b //ERROR //我們可以通過顯式轉換把數(shù)值類型提升 val i: Int = b.toInt() // 顯式轉換
每個數(shù)值類型都支持下面的轉換:
toByte(): Byte toShort(): Short toInt(): Int toLong(): Long toFloat(): Float toDouble(): Double toChar(): Char
隱式轉換的缺席是很少提及,因為我們可以使用上下文推斷出類型,并且算術運算會為合適的轉換進行重載,比如1
val l = 1.toLong + 1 //Long + Int => Long
Char字符
由于不是數(shù)值類型,所以我們必須這樣使用:
fun check(c: Char) {//函數(shù)先判斷是不是Char類型 if (c == 1) { //ERROR: 類型不匹配 //... } }
字符是單引號包起來的 ‘1','\n','\uFF00'。我們可以顯示的把它轉換為 Int 型
fun decimalDigitValue(c: Char): Int { if (c !in '0'..'9') throw IllegalArgumentException("Out of range") return c.toInt() - '0'.toInt() //顯示轉換為數(shù)值類型 }
和數(shù)值類型一樣,字符在空檢查后會在需要的時候裝箱。特性不會被裝箱操作保留的。
布爾類型
布爾值只有 true 或者 false+
布爾值的內建操作包括
|| – lazy disjunction && – lazy conjunction
結尾
好了Kotlin的基本數(shù)據(jù)類型的使用也是講完了,學習是我們前進的不竭動力。下一篇我們來講Kotlin引用數(shù)據(jù)類型的使用。
Come on,enjoy it.
相關文章
SpringBoot自動配置Quartz的實現(xiàn)步驟
本文主要介紹了SpringBoot自動配置Quartz的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11IntelliJ IDEA中properties文件顯示亂碼問題的解決辦法
今天小編就為大家分享一篇關于IntelliJ IDEA中properties文件顯示亂碼問題的解決辦法,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10SpringBoot過濾器與攔截器深入分析實現(xiàn)方法
大家應該都曉得實現(xiàn)過濾器需要實現(xiàn) javax.servlet.Filter 接口,而攔截器會在處理指定請求之前和之后進行相關操作,配置攔截器需要兩步,本文通過實例代碼給大家介紹SpringBoot 過濾器和攔截器的相關知識,感興趣的朋友一起看看吧2022-11-11淺析Java?NIO?直接緩沖區(qū)和非直接緩沖區(qū)
本篇文章主要為大家介紹了Java?NIO?中直接緩沖區(qū)和非直接緩沖區(qū)的定義以及使用流程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-11-11SpringBoot增強Controller方法@ControllerAdvice注解的使用詳解
這篇文章主要介紹了SpringBoot增強Controller方法@ControllerAdvice注解的使用詳解,@ControllerAdvice,是Spring3.2提供的新注解,它是一個Controller增強器,可對controller進行增強處理,需要的朋友可以參考下2023-10-10