详解 Kotlin Reference Basic Types, String, Array and Imports
程序员文章站
2023-12-12 18:04:10
详解 kotlin reference basic types, string, array and imports
基本数据类型
kotlin中支持的基本...
详解 kotlin reference basic types, string, array and imports
基本数据类型
kotlin中支持的基本数据类型及它所占bit宽度:
type | bit width |
---|---|
double | 64 |
float | 32 |
long | 64 |
int | 32 |
short | 16 |
byte | 8 |
char 在kotlin中 并不是一个数值类型
kotlin不支持8进制, 支持 2、10、16进制
下面的代码,示例了:
关于2、10、16进制;
使用下划线在数值常量赋值数据中;
使用==和===进行比较;
基本数据类型间的类型转换方法toxxx;
位移操作;
字符,转义符
package com.stone.basic.types /** * desc : 基本数据类型 按位操作符 * author: stone * email : aa86799@163.com * time : 30/05/2017 19 14 */ fun basic() { var intvalue = 7777 var floatvalue1 = 8.3f var floatvalue2 = 10.45f var doublevalue = 9.99 var longvalue = 1l // var longvalue = 1l //不能用 小写l后缀 var hexvalue = 0xa8a8a8a8a8a8a8a //hexadecimals 0x或0x开头 println("hexvalue: ${hexvalue > int.max_value}") var doublevalue2 = 1.3e24 //科学记数法 1.3*10^24 println("1e24 / (10^20) : ${doublevalue2 / math.pow(10.0, 20.0)}") val binaryvalue = 0b00001011 //以 0b或0b 开头 println("binaryvalue : $binaryvalue") /* 不像java中 有一个基本类型 float 对应一个 装箱类型 float kotlin中只有 后者 kotlin中 都能 对应一个 空检查的 装箱类型,即后面加问号: t? */ } //使用下划线在数值常量赋值数据中,增加可读性 val onemillion = 1_000_000 val creditcardnumber = 1234_5678_9012_3456l val socialsecuritynumber = 999_99_9999l val hexbytes = 0xff_ec_de_5e val bytes = 0b11010010_01101001_10010100_10010010 fun equal() { val a: int = 10000 val b: int = 10000 println("1 : ${a === b}") // prints 'true' val boxeda: int? = a val anotherboxeda: int? = a println("2 : ${boxeda === anotherboxeda}") // !!!prints 'false'!!! println("3 : ${boxeda == anotherboxeda}") // prints 'true' // val c: int? = 1 // val d: long? = c // c 不能赋值给 d // println("4 : ${c == d}") // int 和 long不能 相比 //像 上面这样的 隐式转换 都行不通的, 只能使用如下明确转换方式: to方法 val e: int = 1 val f: long = e.tolong() /* - tobyte(): byte — toshort(): short — toint(): int — tolong(): long — tofloat(): float — todouble(): double — tochar(): char */ //类型推断 val l = 1l + 3 // long + int => long } fun bitwise() { val r = 1 shl 2 and 0x000ff000 /* bitwise operations 按位操作符: — shl(bits) – signed shift left (java's << ) — shr(bits) – signed shift right (java's >> ) — ushr(bits) – unsigned shift right (java's >>> ) — and(bits) – bitwise and (&) — or(bits) – bitwise or (|) — xor(bits) – bitwise xor (^) — inv() – bitwise inversion (!) */ } fun charoperation() { val str = "stone" for (c in str) { println("char in str : $c") val r = c + 3 // if (r == 118) {//不能如此操作:char 在kotlin中 并不是一个数值类型 // println(r) // } if (r.toint() == 118) {//可以用toint() 来进行比较 println("符合条件的字符$r, 原始字符串的字符是${r - 3}") } fun decimaldigitvalue(c: char): int { if (c !in '0'..'9') throw illegalargumentexception("out of range") return c.toint() - '0'.toint() // explicit conversions to numbers } // decimaldigitvalue('x') decimaldigitvalue('6') } /* 类似'1'这样单引号中一个字符的定义就是一个 char 支持使用\转义: \t , \b , \n , \r , \' , \" , \\ and \$ unicode字符: '\uff00' */ } fun booleanoperation() { val b: boolean = !true /* 支持的操作符: || 、 && 、 ! */ } fun main(args: array<string>) { basic() equal() charoperation() }
string type
package com.stone.basic.types /** * desc : * author: stone * email : aa86799@163.com * time : 30/05/2017 20 48 */ fun main(args: array<string>) { /* 使用三个双引号开头与结尾, 中间可以包含 任何 非转义字符 */ val text = """ |tell me and i forget. |teach me and i remember. |involve me and i learn. |(benjamin franklin) >admin""".trim().trimmargin().trimmargin(">") //trimmargin 去掉前缀,默认以|作margin前缀,也可以指定前缀 println(text) var s = "abc" var str = "$s.length is ${s.length}" val price = """${'$'}9.99${"\t"}一杯果汁""" println(price) }
array type
package com.stone.basic.types import java.util.* /** * desc : * author: stone * email : aa86799@163.com * time : 30/05/2017 20 48 */ fun main(args: array<string>) { val ary = arrayof(1, 3, 2) //使用arrayof 创建数组 // val asc = array(5, { i -> (i * i).tostring() }) val asc = array(5, { i -> math.random() }) //使用构造函数创建数组:后面的lambda参数,表示设置每个index上的元素 for (it in asc) { // println(it == "1") println(it) } val ary2 = arrayofnulls<long>(2) //每个数组元素中 填充一个null值 for (i in ary2.indices) {//indices 返回一个 索引范围 : intrange ary2[i] = 3l + random().nextint(10) println("ary2[$i] : ${ary2[i]}") //[] 可以用于 get 和 set 操作 } val ary3 = doublearrayof(1.0, 2.2, 3.3) //基本数据类型都对应有一个 xxarrayof函数 }
import
package com.stone.basic.imports import kotlin.* //import static java.lang.math //kotlin 不支持 /* 默认import kotlin file : — kotlin.* — kotlin.annotation.* — kotlin.collections.* — kotlin.comparisons.* (since 1.1) — kotlin.io.* — kotlin.ranges.* — kotlin.sequences.* — kotlin.text.* 还有 kotlin— jvm: — java.lang.* — kotlin.jvm.* //kotlin 不支持 静态方法导入 */
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!