kotlinBase

kotlin基础语法中的坑

1
这里主要是写一些kotlin和java不一样的东西,和一些坑

详细中文文档

Char不是数值类型

不支持八进制

kotlin 基础类型会自动拆装箱

== 等于java中equals ,=== 表示全等

不同基础类型需要显示转换

运算符

1
val x = (1 shl 2) and 0x000FF000

以下是位运算符的完整列表(只适用于 Int 类型和 Long 类型):

  • shl(bits) – 带符号左移 (等于 Java 的<<)
  • shr(bits) – 带符号右移 (等于 Java 的 >>)
  • ushr(bits) – 无符号右移 (等于 Java 的 >>>)
  • and(bits) – 按位与(and)
  • or(bits) – 按位或(or)
  • xor(bits) – 按位异或(xor)
  • inv() – 按位取反

原生字符串–>就是帮你做了转义的工作

1
2
3
4
5
6
7
fun originString(){
val text = """
for (c in "foo")
print(c)
"""
println(text)
}

输出

1
2
3
for (c in "foo")
print(c)

字符串模板

1
2
3
4
5
var i = 1
//第一种
var content = "i = $i"
//第二种,这里可以写表达式
var content2 = "i = ${i+1}"

包(import)

import com.demo.data.User as UserInfo

1
2
3
import com.demo.data.User as UserInfo
var user : UserInfo = UserInfo()

if

1
2
3
4
// if 作为表达式使用
//等价于 var var1000 : [typeName] = null if (var1000 = a){ var1000 = a } else{var1000 = b] mac = var1000
// while try 之类的可以直接赋值也是这个原理
val max = if (a > b) a else b

when

1
when 实际操作是if else 所以理论上if else支持的,when都支持

While do while和java一样

for 支持多种实现

1
2
3
4
5
6
7
8
9
10
// 下标从1-5
//for (var in range [step Int])
for (x in 1..5)
// 从1-4,不包含5,部分会生成Range对象,导致额外开销
//for (var in 1 until 5 [step Int])
for (x in 1 until 5)
//for (var in 5 downTo 1 [step Int])
for (x in 5 downTo 1)
//for (i in array.indices) in 后面实际上跟的Range,底层是用while(true)实现
for (i in array.indices)

返回与跳转 –> return ,break,continue

return和break支持标签
1
2
3
4
5
6
7
8
9
10
// 这里是for是用while实现,和java实现一样
label@ for (i in 1..5){
print(i)
for (j in 1..2){
if (3==i){
break@label
}
}
}
println()
1
2
3
4
5
6
7
8
//在内部方法跳出,这里使用了内联,最后也是通过代码优化,判断条件执行
fun labelReturn(){
var ints = arrayOf(1,2,3)
ints.forEach loop@ {
if (it == 0) return@loop
print(it)
}
}

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器