- 导入/打开项目需选择.src上级目录
- idea里kotlin快捷键
main 主函数 = fun main(args: Array<String>) { }
sout 控制台输出 = println( )
- var 可变的变量
val 运行时的 不可变变量
const val 相当于JAVA中的final
数据类型
kotlin没有包装数据类型,使用时自动转换.
基本数据类型8种首字母大写
数字类型不支持八进制.
二进制以0b开头,如0b0010.十六进制以0x开头,如0x300b
与java不同,范围小的类型不能直接赋值给范围大的类型
整型数范围可以用如下方面查看
fun main(args: Array<String>) {
var maxLong:Long = Long.MAX_VALUE
var minLong:Long = Long.MIN_VALUE
println(maxLong)
println(minLong)
}
类型转换可以使用
val m = 10
println(m.toLong())
标准的赋值操作
val a:Int = 3
kotlin可以智能类型推断,一般可以写作 val a = 3
字符串
优先使用字符串模板或原始字符串而不是字符串连接
用"+"连接字符串与其他类型的值,需要表达式中的第一个元素是 字符串
普通字符串使用" ",如"男孩"
原样输出字符串使用""" """,保留定义时的格式
1.trimIndent去除空格,trimMargin去除指定字符
fun main(args: Array<String>) {
var pn = """
南海
西沙
永兴岛
""".trimIndent()
println(pn) }
输出结果:
南海
西沙
永兴岛
字符串比较
==和equals效果是一样的
比较地址用===
字符串截取substring
字符串分割split,可以多参数
fun main(args: Array<String>) {
val str1 = "张三.李四-王五"
val split1 = str1.split(".", "-")
println(split1)
}
输出结果:
[张三, 李四, 王五]
元组数据
1.二元元组Pair
fun main(args: Array<String>) {
val pair = Pair<String,Int>("张三",20)
val pair1 = "张三" to 20
val name1 = pair1.first
}
输出结果:
张三
2.三元元组Triple
fun main(args: Array<String>) {
val triple = Triple<String,String,Int>("李四","男",30)
val name = triple.first
println(name)
}
输出结果:
李四
空值处理
•?可空变量类型
val a:Int? = null
•!!非空断言
var age:String = null!!
-
空安全调用符?.
str?.toInt() 相当于
if (str != null) { return str.toInt() }else{ return null }
•?:Elvis操作符(猫王)
var ageInt:Int = age?.toInt()?:10
val str: String? = null
val a: Int = str?.toInt() ?: -1
//如果结果为null 返回默认值 不为null 返回当前结果
println(a)
输出结果: -1
接收键盘输入readline()
fun main(args: Array<String>) {
var a:Int = readLine()?.toInt()?:0
var b:Int = readLine()?.toInt()?:0
var result = a+b
println(result)
}