Kotlin 可变变量var、不可变变量val、常量修饰const
可变变量var,不可变变量valval 不是常量,是一个不可变变量,因为var与val最本质的区别是val不能有setter方法var age: Int = 10val name: String = "zhangyu" //不可变变量var name1: String = "zy"var name2: String? = null //类型String后面加上?表示可以为nullfun main(
·
- 可变变量var,不可变变量val
- val 不是常量,是一个不可变变量,因为var与val最本质的区别是val不能有setter方法
var age: Int = 10
val name: String = "zhangyu" //不可变变量
var name1: String = "zy"
var name2: String? = null //类型String后面加上?表示可以为null
fun main() {
//name2可以为null,name1不可以为null,所以不能直接赋值
//name1 = name2!! //加上!!后可以赋值但是如果name2则会抛出NullPointerException
//name2 = name1 //name1可以直接赋值给name2
print(name) // 打印结果是————这个字符串是:zhangyu
print(age) // 打印结果是————这个字符串是:10
}
fun print(msg: String): String {
println("这个值是:$msg") //可以在字符串中引用一个变量使用$符号
return msg
}
fun print(age: Int) {
println("这个值是:$age") //可以在字符串中引用一个变量使用$符号
}
- 可以重写getter和setter方法
class Test {
var string: String? = null
get() {
return field + "hello"
}
set(value) {
field = value + "123"
}
}
fun main() {
val test = Test()
println(test.string) //nullhello
test.string = ""
println(test.string) //123hello
}
- 可以通过重写getter方法来看似于改变val的值
class Test {
val string: String = "123"
get() = field + "456"
}
fun main() {
val test = Test()
println(test.string) //123456
}
- 常量的声明需要加上const修饰符,只能用于object中,或者companion object中,或者置于文件的顶层类块之外
const 只能修饰object的属性,或者top-level变量
const 变量的值必须在编译期间确定下来,所以它的类型只能是String或者基本类型
//1
const val b = 0
object Test {
//2
const val a = 0
}
class Test2{
companion object {
//3
const val c = 0
}
}
更多推荐



所有评论(0)