val ch :Char = 1; // 错误示范
val ch :Char = '1'; // 正确示范
// 将字符类型转换成数字
val ch :Char = '8';
val a :Int = ch.toInt()
c. 字符串类型(Strings)
表示方式:String
特点:不可变
使用:通过索引访问的字符串中的字符:s [i]
// 使用1:一个字符串可以用一个for循环迭代输出
for (c in str) {
println(c)
}
// 使用2:可使用三个引号 """拼接多行字符串
fun main(args: Array<String>) {
val text = """
字符串1
字符串2
"""
println(text) // 输出存在一些前置空格
}
// 注:可通过 trimMargin()删除多余空白
fun strSample() {
val text = """
| str1
|str2
|多行字符串
|bbbbbb
""".trimMargin()
println(text) // 删除了前置空格
}
补充说明:字符串模版(String Templates)
即在字符串内通过一些小段代码求值并把结果合并到字符串中。
模板表达式以美元符($)开头
// $:表示一个变量名 / 变量值
// 示例
val i = 10
val s = "i = $i" // 表示 "i = 10"
// ${varName.fun()}:表示变量的方法返回值
// 示例
val s = "abc"
val str = "$s.length is ${s.length}" //识别为 "abc.length is 3"
d. 布尔类型(Boolean)
Kotlin的Boolean类似于Java的boolean类型,其值只有true 、false
Boolean内置的函数逻辑运算包括:
|| – 短路逻辑或
&& – 短路逻辑与
! - 逻辑非
e. 数组类型(Arrays)
实现方式:使用Array类
使用方法:size 属性、get方法和set 方法。注:使用 [] 重载了 get 和 set 方法,可通过下标获取 / 设置数组值。
创建方式:方式1 = 函数arrayOf();方式2 = 工厂函数
// 方式1:使用arrayOf创建1个数组:[1,2,3]
val a = arrayOf(1, 2, 3)
// 方式2:使用工厂函数创建1个数组[0,2,4]
val b = Array(3, { i -> (i * 2) })
// 工厂函数源码分析
// 参数1 = 数组长度,花括号内是一个初始化值的代码块,给出数组下标 & 初始化值
public inline constructor(size: Int, init: (Int) -> T)
// 读取数组内容
println(a[0]) // 输出结果:1
println(b[1]) // 输出结果:2
// 特别注意:除了类Array,还有ByteArray, ShortArray, IntArray用来表示各个类型的数组
// 优点:省去了装箱操作,因此效率更高
// 具体使用:同Array
val x: IntArray = intArrayOf(1, 2, 3)
// 有传入参数 & 无返回值
// 模板:
fun 函数名(参数名:参数类型){
函数体
}
// 或返回Unit(类似Java的void,无意义)
fun 函数名(参数名:参数类型):Unit{
函数体
}
// 无传入参数 & 无返回值
// 模板:
fun 函数名(){
函数体
}
// 或返回Unit(类似Java的void,无意义)
fun 函数名():Unit{
函数体
}
4.6 其他语法糖
关于Kotlin的一些实用语法糖,主要包括:
控制流(if、when、for、 while)
范围使用(in、downTo、step、until)
类型检查 & 转换(is、智能转换、as)
相等性(equals()、=、 ==)
空安全
a. 控制流语句
控制流语句主要包括:if、when、for 和 while。
if语句
Kotlin中的if语句与Java用法类似
区别在于:Kotlin的if语句本身是一个表达式,存在返回值
var c = if (a > b) 3 else 4
// 若a > b,则返回3给c
// 若a < b,则返回4给c
// 类似Java中的三元表达式
c = a > b ? 3 : 4; // 若a>b,c=3,否则c=4
// 若if后面是代码块
var c = if (a > b) {
代码块1
} else {
代码块2
}
// 若a > b,则执行代码块1,否则执行代码块2
when语句
类似Java中的switch语句
// Java中的Switch语句
int a = 0;
switch (a) {
case 0:
break;
case 1:
break;
default:
break;
}
// Kotlin中的when语句
var a = 0
when (a) {
0 -> {代码块1}
1 -> {代码块2}
2,3 -> {代码块3}
else -> {代码块4}
}
// 说明:
// 当a=0时执行代码块1
// 当a=1时执行代码块2
// 当a=2,3时,执行代码块3
// 当a=其他值时,执行代码块4
// 注意:when语句在满足条件的分支执行后,会终止when语句执行
for语句
类似Java中的for语句
// 示例1:表达一个数字是否在目的范围内
// Java中的for语句
for (int i = 0; i < 4; i++) {
System.out.println(i);
}
// Kotlin中的for语句
if (i in 1..4){
println(i)
}
// 注:关键字用于表示数字是否在目标范围内,上面的示例表示判断i是否在代表1-4范围内
// 示例2:通过索引遍历一个数组
// Java中的for语句
for (int i = 0; i < 4; i++) {
System.out.println(i);
}
// Kotlin中的for语句
for (i in array.indices) {
println(array[i])
}