1-5-声明变量

Kotlin 是强类型的语言 , Kotlin要求所有的变量必须先声明、后使用 语法

var | val 变量名[:类型][=初始值]

注意事项

  1. 用 var 声明的变量是可变的(可以重新赋值),用 val 声明的变量是不可变的(赋值后不能修改引用)。

  2. 如果声明时不写类型,必须直接赋初始值,编译器通过初始值推断类型;不能既不写类型,也不赋初始值。

  3. 显式指定的变量类型必须和初始值的类型兼容(相同或子类关系)。

  4. val 是不可变引用,但如果是引用对象,内部状态仍可以变化(类似 Java 中的 final 引用)。

  5. Kotlin 是强类型语言,变量一旦声明,类型就确定了

fun main() {
//声明变量时显示指定类型
var b : Int
//声明变量时指定初始值,编译器会自动类型推断

b = 20 //由于b声明时指定类型是Int(整型),所以这里赋值正确

声明是可以同时指定类型和赋值
var age : Int = 15
age = 20 //age的类型是Int,赋值正确
声明变量指定类型与初始值不一致会赋值失败
var name = 200

//val声明的变量不可变
val url = “s0raLin.github.io”
url = "s0raLin.gitee.io" //错误,使用val声明的变量不能重新赋值

//不能重新赋值为不同类型
var book = "Kotlin核心编程"
book = 20 //类型不匹配,抛出异常

}

局部变量

  • 局部范围的常量: 在声明时可以不指定初始值,但是在第一次使用是需要指定值。

  • 类的常量属性: 既可以在声明时指定初始值、也可以在类的构造器中指定初始值、还可以在类中的init块中设置初始值。

顶层函数和顶层变量

  • 由于 Kotlin 程序编译的字节码必须遵守 JVM 规范,因此,直接在文件中定义的(顶层)变量 、(顶层)函数, kotlinc 将会自动生成一个名为“文件名首字母大写+Kt "的类, 并将变量转换为该类的静态的 getterr 、 setter 方法(其中 val 声明的只有 getter 方法) ,函数则转换为该类的静态方法。