1. 位操作符
shl(bits) - 左移位,对应java <<
shr(bits) - 右移位,对应Java >>
ushr(bits) - 无符号右移位,对应Java >>>
and(bits)- 与,&&
or(bits)- 或,||
xor(bits)- 异或
inv()- 反向
2. 字符
在kotlin中,Char 不能直接和字符操作,Char必须是单引号包含起来的,比如 ‘a', ’0‘。这点和Java不同
fun check(c: char) {
if (c == 1) //错误,类型不兼容
}
3. 字符比较与转换
fun digit(c: Char): Int {
if (c !in '0'..'9') throw IllegalArgumentException("Out of Range")
//显示转换为数字
return c.toInt() - '0'.toInt()
}
4. 数组
与Java不同,Kotlin中数组是不协变的(invariant)
fun array(args: Array<String>) {
//[1,2,3]
var a = arrayOf(1,2,3)
//[0,2,4]
var b = Array(3, {i -> (i * 2)})
println(a[0])
println(b[1])
//kotlin 数组,还有ByteArray、ShortArray、IntArray,省去了装箱操作
var x: IntArray = intArrayOf(1, 2, 3)
x[0] = x[1] + x[2]
}
5. 字符串
fun str(str:String) {
for (c in str) {
println(c)
}
}
6. 与Java不同的是,Kotlin支持三个引号 """ 扩起来的字符串,支持多行字符串
fun str(args: Array<String>) {
var text = """
多行字符串
多行字符串
"""
println(text)
/*String 可以通过 trimMargin() 方法来删除多余的空白*/
var text2 = """
|多行字符串
|多行字符串
“”“.trimMargin()
println(text2)
}
7. 字符串模版
字符串可以包含模板表达式,即一些小段代码,会求值,并把结果合并到字符串中。
模板表达式以美元符($)开头,由一个简单的名字构成
或者用花括号扩起来的任意表达式
此外,原生字符串和转义字符串内部都支持模板
fun strMode(args: Array<String>) {
var i = 10
var s = "i = $i" //求值,结果为字符串 "i = 10"
print(s)
/*花括号扩起来的任意表达式*/
s = "runoob"
var str = "$s.length is ${s.length}" //求值,结果为字符串 “runoob.length is 6”
print(str)
// "$" 字符的转义
val price = """
${'$'}9.9
"""
println(price) //结果为 $9.9
}