1. 程式人生 > >Kotlin學習筆記(二)基本資料型別

Kotlin學習筆記(二)基本資料型別

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
    }
}