布尔型只有一个Boolean类型,用于表示逻辑上的“真”或“假”。与Java类似,Kotlin的 Boolean类型的值只能是true或false,不能用0或者非0来代表。其他数据类型的值也不能转换成Boolean类型。
例如,下面代码定义了两个Boolean类型的变量,并指定初始值。
程序清单:codes\02\2.7\BooleanTest.kt
fun main(args: Array<String>) {
// 定义b1的值为true
var b1 : Boolean = true
// 定义b2的值为false
var b2 : Boolean = false
}
字符串"true"和"false"不会直接转换成Boolean类型,但Boolean类型的变量同样可以“插值”到字符串中。看下面代码(程序清单同上):
// 将Boolean类型的变量插值到字符串中
var str: String = "${b1}代表真"
println(str)
与前面介绍数值型、Char型类似的是,Boolean类型的变量不能接受null值,Boolean?类型的变量才能接受null值。Boolean类型将直接映射为Java的boolean基本类型,但Boolean?类型将会映射成boolean的包装类:Boolean。
Boolean类型的值或变量主要用作旗标来进行流程控制,在Kotlin语言中使用Boolean类型的变量或值控制的流程主要有如下几种。
- if条件控制语句。
- while循环控制语句。
- do while循环控制语句。
除此之外,Boolean类型的变量和值还可在三目运算符(? :)中使用。这些内容在3.9节将会有更详细的介绍。
如果程序在需要使用Boolean类型的地方使用了非Boolean值,Kotlin的类型检查机制会报错。下面例子会报告一个编译错误。
var i = 1
if (i) {
// 这个例子不能通过编译,会报错
}
下面例子则是正确的。
var i = 1
if (i == 1) {
// 这个例子可以通过编译,不会报错
}
上面程序中第一个例子if后面期望一个Boolean类型的值,但常量i是Int类型的,因此这个例子无法通过编译;对于i == 1比较的结果是Boolean类型,因此第二个例子可以通过编译检查。
以上内容节选自《疯狂Kotlin讲义》:一本让您最直接认识Kotlin的疯狂讲义
第二期:
第三期:
第四期:
第五期:
第六期:
第七期:
第八期:
第九期:
第十期: