Kotlin筆記二,Kotlin基本類型

在 Kotlin 中,所有東西都是對象,在這個意義上講我們可以在任何變量上調用成員函數與屬性。
Kotlin 中使用的基本類型:數字、字符、布爾值、數組與字符串。

數字

整數
	類型 	大小(比特數)	 	
	Byte 	8 					
	Short 	16 					
	Int 	32 					
	Long 	64 					

所有以未超出 Int 最大值的整型值初始化的變量都會推斷爲 Int 類型。
如果初始值超過了其最大值,那麼推斷爲 Long 類型。

浮點數
	Kotlin 提供了 Float 與 Double 類型
	類型 	大小(比特數)	 					
	Float 	32 	
	Double 	64

對於以小數初始化的變量,編譯器會推斷爲 Double 類型。
如需將一個值顯式指定爲 Float 類型,添加 f 或 F 後綴

數值常量字面值有以下幾種:
	十進制: 123
	十六進制: 0x0F
	二進制: 0b00001011
	Long 類型用大寫 L 標記: 123L
	不支持八進制寫法

在Java平臺數字是物理存儲爲 JVM 的原生類型,除非我們需要一個可空的引用(如 Int?)或泛型。 後者情況下會把數字裝箱。

== 和 === 區別

==比較數值 ===比較地址值

		val a : Int = 9999
        val b : Int? = a
        val c : Int? = a
        println(b == c)//true
        println(b === c)//false
		a是數值, b、c是對象

		val a : Int = 9999
        val b : Int = a
        val c : Int = a
        println(b == c)//true
        println(b === c)//true
		a, b, c都是數值
		
		val a : Int? = 9999
        val b : Int? = a
        val c : Int? = a
        println(b == c)//true
        println(b === c)//true
		a, b, c都是同一個對象
		
		val a : Int = 9999  這樣的定義代表a是一個數值,不是對象。
		val a : Int? = 9999 這樣的定義代表a是一個對象,對數字進行了裝箱。
顯示轉換

每個數字類型支持如下的轉換:

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

完整的位運算列表(只用於 Int 與 Long):

shl(bits) – 有符號左移
shr(bits) – 有符號右移
ushr(bits) – 無符號右移
and(bits) – 位與
or(bits) – 位或
xor(bits) – 位異或
inv() – 位非

字符

字符用 Char 類型表示。它們不能直接當作數字

		 var char  = 'a'

布爾值

	布爾用 Boolean 類型表示,它有兩個值:true 與 false。
	若需要可空引用布爾會被裝箱。
	 var flag :Boolean? = false 
	內置的布爾運算有:
		|| – 短路邏輯或
		&& – 短路邏輯與
		!  - 邏輯非

數組

數組在 Kotlin 中使用 Array 類來表示,它定義了get與set函數(按照運算符重載約定這會轉變爲[])以及 size 屬性。
可以使用庫函數 arrayOf() 來創建一個數組並傳遞元素值給它,這樣 arrayOf(1, 2, 3) 創建了 array [1, 2, 3]。
或者,庫函數 arrayOfNulls() 可以用於創建一個指定大小的、所有元素都爲空的數組。

	val names = arrayOfNulls<String>(5)
    names.set(0,"楊過")
    names.set(1,"小龍女")
    names.set(2,"郭靖")
    names.set(3,"郭芙")
    names.set(4,"黃蓉")
	
	names[1] = "天外飛仙"
    names.forEach {
        println(it)
    }

字符串

字符串用 String 類型表示。字符串是不可變的。字符串的元素——字符可以使用索引運算符訪問: s[i]。
可以用 for 循環迭代字符串:

    var str = "baotazhenheyao"
    for (a in str){
        println(a)
    }

字符串字面值可以包含模板表達式 ,即一些小段代碼,會求值並把結果合併到字符串中。
模板表達式以美元符($)開頭,由一個簡單的名字構成:

	val age = 100
    println("age = $age") // 輸出“age = 100”
	
	var name = "歐陽鋒"
    println("$name.length 爲 ${name.length}") //輸出 歐陽鋒.length 爲 3

字面上可以寫明具體的類型。這個不是必須寫明的。
我們可以讓編譯器自己去推斷出具體的類型。

val a = 100 //  Int
val b = 0x0f // 一個十六進制的Int類型
val c = 31L // Long
val d = 3.5 //  Double
val f = 3.8F // Float
val g = false //Boolean
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章