变量声明
Kotlin的变量的关键字有两个,分别是val
和 var
。一般情况下,var
关键字定义变量,val
关键字定义常量。
val关键字
val
不可变变量,对应java的final
变量,只能被赋值一次,不能被重新赋值。
val str1 = "hello world!"
编译为Java代码:
@NotNull
private final String str1 = "hello world!";
var关键字
var
可变变量,对应java的非final
变量.,可以重复赋值。
fun main() {
var str2 = "kotlin"
//可以再次赋值
str2 = "hello"
}
编译为Java代码:
@NotNull
private String str2 = "kotlin";
Kotlin的类型推断
上面的两个变量声明的时候并未声明变量类型,这是因为Kotlin存在类型推导机制,str1和str2会根据赋值默认推导为String类型。如果再次赋值一个Int类型就会报错,代码如下:
fun main() {
var str2 = "kotlin"
//报错
str2 = 1
}
当然也可以显示的指明变量的类型。
fun main() {
var str2: String
var num: Int
}
基本类型
Kotlin不再存在基本类型,将全部使用对象类型。
Java基本类型 | Kotlin对象类型 | 对象类型说明 |
---|---|---|
int | Int | 整型 |
long | Long | 长整型 |
short | Short | 短整型 |
float | Float | 单精度浮点型 |
double | Double | 双精度浮点型 |
boolean | Boolean | 布尔型 |
char | Char | 字符型 |
byte | Byte | 字节型 |
数字类型
数字类型:byte,short,int,long,float,double
。和Java一样,Kotlin中的所有数字类型都有符号,也就是说既可以表示正数,也可以表示负数。
1、数字安全转化:
fun main() {
val num1: Int = "9.8".toInt()
}
直接执行上面函数会报错:NumberFormatException,我们修改下:
fun main() {
val num2: Int? = "9.8".toIntOrNull()
println(num2)
}
//运行结果是:null
在做转换的时候可以使用安全转换函数toIntOrNull,如果数值不能正确转换就返回null
。
2、Double转Int与类型格式化
fun main() {
//转化丢失精度
println(8.956756.toInt())
//四舍五入
println(8.956756.roundToInt())
println(8.156756.roundToInt())
//格式化:只需要小数点后两位
val s:String = "%.2f".format(8.956756)
println(s)
}
//运行结果:
8
9
8
8.96