Kotlin语言基础(二)-变量和数据类型

Kotlin语言基础-变量和数据类型

一、Kotlin的变量

Kotlin变量有两种形式var(variable)和val(value,取值)
val定义只读量,一旦创建,其值不会发生变化
例:

val a = 23

那么对于a对应的值就只能是23,不会发生变化。如何试图对a重新赋值都会导致编译错误。
var定义可变的变量,可以多次赋值修改变量的值。
例:

var b = 23
b=25

Kotlin语言中任何数据都是对象,因此对象都具有一个特定的数据类型。

二、数据类型

1.常见的数据类型

Short:短整型(16位)
Long:长整型(64位)
Int:整数(32位)
Double:双精度实数(64位)
Float:单精度实数(32位)
Byte:字节类型(8位)
Boolean:布尔类型(取值true或false)

在上述的类型中,表示常见的基本类型。
例如:

var a = 23

编译器会自动推断数据类型为Int

var b = 23.0

编译器会自动推断数据类型为Double
注意:var c:Int = null 是错误的。任何变量所属的类型后没有?表示非可空类型。
如果需要表示为可空类型,需要在数据类型后增加?,形如:
var c:Int? = null
这种定义c的变量才是正确的。

2. Any和Any?
任何一种非空类型的父类都是Any类型,Any类型表示成任何类型:
例如:

var d:Any = 23
d = true
d = 23.34

上述表示均为正确。

如果对于任何类型需要定义为可空类型,则可以表示为Any?类型,例:

var e:Any? = null
e = 23
e = false

3.Nothing
Nothing类型表示没有对象实例. 可以通过Nothing表示一个不存在的值。如果一个函数返回Nothing,这意味函数没有返回任何值(通常会抛出异常)。例:

fun doSomething():Nothing{
    
    
    throw NullPointerException("空指针")
}

有一种特殊的表示,如

var c = null

这时,编译器会将c解析成Nothing?可空的,实质上的含义是不表示任何实例对象,即表示不存在的实例对象。

4.可空类型的相关运算
(1)安全调用 ?.
如果一个对象为null,调用这个对象的方法会抛出空指针异常,导致运行出现问题。因此需要避免这种情况发生,利用安全调用可以先对对象进行判断,如果为空返回null,否则执行操作。例如:

var str:String? = null
println(str?.length)
str = "hello"
println(str?.length)

运行结果是:

null
5

(2)Elvis运算
Elvis运算符是?:
表达的意思是如果对象为null,则返回?:后面的表达式的结果;否则返回对象本身。
例如:

var str :String? = null
println(str?:"空字符串”)
str = "hello"
println(str?:"空字符串”)

运行结果是:

空字符串
hello

(3)非空断言运算
非空断言运算符是!!,它用于判断对象是否为null,如果是,抛出NullPointerException异常,否则执行后续的操作。例:

var str:String? = null
println(str!!.length)

运行结果是:

Exception in thread “main” java.lang.NullPointerException …

又如:

var str:String? = “hello”
println(str!!.length)

运行结果是:

5

参考文献:
陈轶《Android移动应用开发(微课版)》 清华大学出版社 ISBN 978-7-302-59734-6

猜你喜欢

转载自blog.csdn.net/userhu2012/article/details/132676216