Kotlin學習筆記(二)基本資料型別
阿新 • • 發佈:2019-01-28
Kotlin中常量和變數的定義格式:
- val相當於java中的final關鍵字,表示該變數是一個常亮,不可修改(型別的宣告可以不寫)
- var表示一個變數,可以被修改
val 常量名:變數型別 = value
var 變數名:變數型別 = value
(1)Boolean型別
fun main(args: Array<String>) {
val sex:Boolean = true
var right:Boolean = false
//編譯報錯,val修飾的值是常亮,不能被修改
// flag = false;
right = true ;
println(sex) //true
println(right) //true
}
(2)Number型別
- Kotlin 的基本數值型別包括 Byte、Short、Int、Long、Float、Double 等。不同於Java的是,字元不屬於數值型別,是一個獨立的資料型別,下圖是各種數值型別所佔用位數,與Java相同
- 以下是基本數值型別的簡單練習,注意以下幾點
- 支援 0x16進位制 和 0b二進位制 的數值
- val e:Int = 123_456 //下劃線純粹是為了分割數字,方便易讀
- 整數預設Int型別,小數預設Double型別
/**
* Int型別 4
*/
val a:Int = 12
val b:Int = 0xff //255
val c:Int = 0b00000011
val e:Int = 123_456 //下劃線純粹是為了分割數字,方便易讀
val maxInt:Int = Int.MAX_VALUE //2.147483647E9
val minInt:Int = Int.MIN_VALUE //-2.147483648E9
println(Math.pow(2.0,31.0)-1) //2.147483647E9
println(-Math.pow(2.0,31.0)) //-2.147483648E9
/**
* Long型別 8
*/
val d:Long = 123L
val maxLong:Long = Long.MAX_VALUE
val minLong:Long = Long.MIN_VALUE
/**
* Float型別 4
*/
val f1:Float = 2.0f
val f2:Float = 1e3f //表示10^3
val fMax:Float = Float.MAX_VALUE
val fMin:Float = Float.MIN_VALUE
println(0.0F/0.0F) //NaN
println(0.0F/0.0F == Float.NaN) //fasle
/**
* Double型別 8
*/
val d1:Double = 3.0 //小數預設為Double
/**
* Byte 1
*/
var b1:Byte = Byte.MAX_VALUE //127
var b2:Byte = Byte.MIN_VALUE //-128
- 數值型別不支援自動型別轉換(將小型別自動轉換成大型別)
val a:Int = 123
//編譯錯誤 4位元組的Int型別a不能賦值給8位元組的Long型別b
// val b:Long = a
//強制轉換
val b:Long = a.toLong()
- 每種資料型別都有以下這幾種強轉的方法
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char
- 對於Int和Long型別,還有一系列的位操作符可以使用
//對於Int和Long型別,還有一系列的位操作符可以使用
val a:Int = 8
//左移位
val b = a.shl(1)
println(b)//16
//右移位
val c = a.shr(1)
println(c)//4
//無符號右移位
val d = a.ushr(1)
println(d)//4
//與
val e = a.and(0b00000000_00000000_00000000_00001000)
println(e)//8
//或
val f = a.or(0b00000000_00000000_00000000_00000000)
println(f)//8
//異或
val g = a.or(0b00000000_00000000_00000000_00000000)
println(g)//8
//按位取反反向
val h = a.inv()
println(h)//8
(3)String型別
- 對於字串瞭解以下練習程式碼即可(注意下字串模板的使用$)
/**
* 雙引號
*/
val text = "hello"
/**
* 三引號多行字串
*/
val text1 = """
多行字串
多行字串
"""
println(text1) // 輸出有一些前置空格
/**
* 字串模板
*/
val i = 10
val s = "i = $i" // 求值結果為 "i = 10" $變數名
println(s)
println("${text.length}")//${表示式}
(4)Char型別
Char型別用單引號抱起來,支援各種轉義字元
val c1:Char = '0' val c2:Char = '\"' val c3:Char = '\u000f'
(5)陣列型別
相比於Java,Kotlin中也有一些基本資料型別的陣列型別
以下是陣列的測試程式碼
fun main(args: Array<String>) {
val arrayOfInt:IntArray = intArrayOf(1,3,5,7)
val arrayOfChar:CharArray = charArrayOf('a','b','c','d')
val arrayOfString:Array<String> = arrayOf("a","b")
val arrayOfTiger:Array<Tiger> = arrayOf(Tiger("張"), Tiger("王"))
//陣列長度
println(arrayOfChar.size)
//陣列遍歷
for (c in arrayOfChar){
println(c)
}
//取出特定位置的資料
println(arrayOfTiger[1]) //王
//字元陣列拼接
println(arrayOfChar.joinToString()) //a, b, c, d
}
//此處涉及到類的宣告,暫時寫死,不解釋
class Tiger(var name:String){
override fun toString(): String {
return name
}
}