详解 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不支持静态方法导入 */
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!