package jibenshujuleixing
/*
Kotlin 基本數值類型包括 Byte8 Short16 Int32 Long64 Float32 Double64
不同于java的是字符不屬于數值類型,是一個獨立的數據類型
十進制: 123
長整型 :123L
16進制以0x開頭: 0x0F
2進制以0b開頭: 0b0001011
八進制不支持
Doubles默認寫法:123.5
Floats 使用f或F為后綴 123.5f
可以使用下劃線使數字常量更加易讀
val oneMillion=1_000_000
val creditCarNumber=1234_5678_9012_3456L
*/
//---------------比較兩個數字---------------
/*
Kotlin 中沒有基礎數據類型,只有封裝的數字類型,每定一個變量,實際上Kotlin封裝了一個對象
這樣做可以保證不會出現空指針的情況。數字類型也一樣,所以比較兩個數字的時候,就有比較數據大小和
比較兩個對象是否相同的區別了。
在Kotlin中,三個等號===表示比較對象的地址,兩個==表示比較對象的大小。
/
/fun main(args: Array<String>) {
val a:Int=10_000
println(a===a)//true
//經過裝箱,創建了兩個不同的對象
val boxedA:Int?=a
val anotherBoxedA:Int?=a
//封裝后對象地址不一樣,但是值是相同
println(boxedA===anotherBoxedA)// false
println(boxedA==anotherBoxedA)//true
}*/
//------------------類型轉換--------------------
/*
由于有不同的表示方式,較小類型并不是較大類型的子類型
也不能隱式轉換成較大的類型,意味著在不進行顯示轉換的情況下,不能將Byte賦值給Int
/
/
fun main(args: Array<String>) {
val b:Byte=1//OK,字面值是靜態檢測的
//val i:Int=b//錯誤
//可以代用toInt方法
val i:Int=b.toInt()
每個類型都有以下方法可以進行轉換
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char
//在編譯器能夠根據上下文推斷出數據類型的情況下也是可以省略的
val l=1L+3//Long+Int=>Long
}*/
//-------------------位操作符-----------------------
/*fun main(args: Array<String>) {
var a=3
println(10.shl(1))//左移
println(10.shr(1))//右移
println(10.ushr(1))//無符號右移
println(a and 4)//與
println(1.or(1))//或
println(1.xor(1))//異或
println(0.inv())//反向
}
*/
//-----------字符---------------
/*
和java 不一樣 Kotlin 中的Char不能直接和數字進行操作,
Char必須是單引號包好起來的'a','0'
字符字面值用單引號括起來。特殊字符可以用反斜杠轉義。
支持這幾個:\t \b \n \r ' " \ $
編碼其他的字符要用Unicode轉義序列語法:\uFF00
可以顯示的把字符轉換為int 數字
/
/fun main(args: Array<String>) {
fun Check(c:Char):Boolean{
//if(c==1)//錯誤
if(c=='1')return true
return false
}
fun decimalDigtVlaue(c:Char):Int{
return c.toInt()
}
println(decimalDigtVlaue('0'))// 轉換出來是字符的ASCII編碼
}
*/
//--------------布爾類型--------------
/*
布爾用Boolean表示 true或false
內置的布爾運算為 || && !
*/
//---------------------數組-----------------------
/*
數組用Array實現,并且還有一個size屬性及get和set方法,由于使用[]
重載了get和set 所以可以很方便的獲取或設置數組對應位置的值
數組的創建兩種方式,
一:種使用函數arrayOf()
二:使用工廠函數
與java中不同的是,Kotlin中的數組是不型變的
除了類Array還有ByteArray ShortArray IntArray
用來表示各個類型的數組,省去裝箱操作,效率更高
而用法和Array一樣沒有區別
*/
/fun main(args: Array<String>) {
val a=arrayOf(1,2,3)
val b=Array(3){i->(i2)}//i從0開始并自增1 i為下標 lambda表達式的使用
println(a[1])
b[1]=100
println(b[1])
val c=IntArray(3)//默認0
c[0]=2
//size 和count是一樣 返回數組的元素個數 sum則是返回數組元素的總和
println(""+c.size+" "+c.sum()+" "+c.count())
}
*/
//------------------字符串----------------------
/*
和java一樣,String 是可不變的,方括號[]語法可以很方便的獲取
字符串中的某個字符,也可以通過for循環
/
/fun main(args: Array<String>) {
val str="aaassss"
println(str[5])
for(c in str) println(c)
//kotlin 支持三個引號括起來的字符串。支持多行字符串"""
val text="""
第一行
第二行
第三行
"""
println(text)
val text2="""
|第一行
|第二行
|第三行
""".trimMargin()//去掉前置空格
println(text2)
}*/
//---------------------字符串模板------------------
/*
字符串可以包含模板表達式
即一小段代碼可以求值包含在字符串中
以$開頭
*/
fun main(args: Array<String>) {
val i=10;
val s="i=$i"
println(s)
//用{}括起來可以表示任意表達式求值
val s2="runoob"
val str="$s2 length is ${s.length}"
println(str)
//原生字符串和轉義字符串內部支持模板,如果你需要在原生字符串中表示字面值$字符
//它不支持反斜杠的轉義,可以使用以下方式 $ 或以下的方式
val price="${'$'}9.99"
println(price)
}