详解 Kotlin Reference Basic Types, String, Array and Imports
详解KotlinReference BasicTypes,String,ArrayandImports
基本数据类型
Kotlin中支持的基本数据类型及它所占Bit宽度:
Type
Bitwidth
Double
64
Float
32
Long
64
Int
32
Short
16
Byte
8
Char 在kotlin中并不是一个数值类型
kotlin不支持8进制,支持2、10、16进制
下面的代码,示例了:
关于2、10、16进制;
使用下划线在数值常量赋值数据中;
使用==和===进行比较;
基本数据类型间的类型转换方法toXxx;
位移操作;
字符,转义符
packagecom.stone.basic.types
/**
*desc:基本数据类型按位操作符
*author:stone
*email:aa86799@163.com
*time:30/05/20171914
*/
funbasic(){
varintValue=7777
varfloatValue1=8.3f
varfloatValue2=10.45F
vardoubleValue=9.99
varlongValue=1L
//varlongValue=1l//不能用小写l后缀
varhexValue=0XA8a8a8a8a8a8a8a//Hexadecimals0x或0X开头
println("hexValue:${hexValue>Int.MAX_VALUE}")
vardoubleValue2=1.3e24//科学记数法1.3*10^24
println("1e24/(10^20):${doubleValue2/Math.pow(10.0,20.0)}")
valbinaryValue=0B00001011//以0B或0b开头
println("binaryValue:$binaryValue")
/*
不像java中有一个基本类型float对应一个装箱类型Float
kotlin中只有后者
kotlin中都能对应一个空检查的装箱类型,即后面加问号:T?
*/
}
//使用下划线在数值常量赋值数据中,增加可读性
valoneMillion=1_000_000
valcreditCardNumber=1234_5678_9012_3456L
valsocialSecurityNumber=999_99_9999L
valhexBytes=0xFF_EC_DE_5E
valbytes=0b11010010_01101001_10010100_10010010
funequal(){
vala:Int=10000
valb:Int=10000
println("1:${a===b}")//Prints'true'
valboxedA:Int?=a
valanotherBoxedA:Int?=a
println("2:${boxedA===anotherBoxedA}")//!!!Prints'false'!!!
println("3:${boxedA==anotherBoxedA}")//Prints'true'
//valc:Int?=1
//vald:Long?=c//c不能赋值给d
//println("4:${c==d}")//Int和Long不能相比
//像上面这样的隐式转换都行不通的,只能使用如下明确转换方式:to方法
vale:Int=1
valf:Long=e.toLong()
/*
-toByte():Byte
—toShort():Short
—toInt():Int
—toLong():Long
—toFloat():Float
—toDouble():Double
—toChar():Char
*/
//类型推断
vall=1L+3//Long+Int=>Long
}
funbitwise(){
valr=1shl2and0x000FF000
/*
bitwiseoperations按位操作符:
—shl(bits)–signedshiftleft(Java's<<)
—shr(bits)–signedshiftright(Java's>>)
—ushr(bits)–unsignedshiftright(Java's>>>)
—and(bits)–bitwiseand(&)
—or(bits)–bitwiseor(|)
—xor(bits)–bitwisexor(^)
—inv()–bitwiseinversion(!)
*/
}
funcharOperation(){
valstr="stone"
for(cinstr){
println("charinstr:$c")
valr=c+3
//if(r==118){//不能如此操作:Char在kotlin中并不是一个数值类型
//println(r)
//}
if(r.toInt()==118){//可以用toInt()来进行比较
println("符合条件的字符$r,原始字符串的字符是${r-3}")
}
fundecimalDigitValue(c:Char):Int{
if(c!in'0'..'9')
throwIllegalArgumentException("Outofrange")
returnc.toInt()-'0'.toInt()//Explicitconversionstonumbers
}
//decimalDigitValue('x')
decimalDigitValue('6')
}
/*
类似'1'这样单引号中一个字符的定义就是一个Char
支持使用\转义:\t,\b,\n,\r,\',\",\\and\$
Unicode字符:'\uFF00'
*/
}
funbooleanOperation(){
valb:Boolean=!true
/*支持的操作符:||、&&、!*/
}
funmain(args:Array){
basic()
equal()
charOperation()
}
StringType
packagecom.stone.basic.types /** *desc: *author:stone *email:aa86799@163.com *time:30/05/20172048 */ funmain(args:Array){ /*使用三个双引号开头与结尾,中间可以包含任何非转义字符*/ valtext=""" |TellmeandIforget. |TeachmeandIremember. |InvolvemeandIlearn. |(BenjaminFranklin) >admin""".trim().trimMargin().trimMargin(">")//trimMargin去掉前缀,默认以|作margin前缀,也可以指定前缀 println(text) vars="abc" varstr="$s.lengthis${s.length}" valprice="""${'$'}9.99${"\t"}一杯果汁""" println(price) }
ArrayType
packagecom.stone.basic.types importjava.util.* /** *desc: *author:stone *email:aa86799@163.com *time:30/05/20172048 */ funmain(args:Array){ valary=arrayOf(1,3,2)//使用arrayOf创建数组 //valasc=Array(5,{i->(i*i).toString()}) valasc=Array(5,{i->Math.random()})//使用构造函数创建数组:后面的lambda参数,表示设置每个index上的元素 for(itinasc){ //println(it=="1") println(it) } valary2=arrayOfNulls (2)//每个数组元素中填充一个null值 for(iinary2.indices){//indices返回一个索引范围:IntRange ary2[i]=3L+Random().nextInt(10) println("ary2[$i]:${ary2[i]}")//[]可以用于get和set操作 } valary3=doubleArrayOf(1.0,2.2,3.3)//基本数据类型都对应有一个xxArrayOf函数 }
Import
packagecom.stone.basic.imports importkotlin.* //importstaticjava.lang.Math//Kotlin不支持 /* 默认importKotlinfile: —kotlin.* —kotlin.annotation.* —kotlin.collections.* —kotlin.comparisons.*(since1.1) —kotlin.io.* —kotlin.ranges.* —kotlin.sequences.* —kotlin.text.* 还有Kotlin—JVM: —java.lang.* —kotlin.jvm.* //Kotlin不支持静态方法导入 */
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!