🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 字符型——[kotlin.Char](https://www.w3cschool.cn/doc_kotlin/kotlin-api-latest-jvm-stdlib-kotlin--char-index.html) 【**注意】在 Kotlin 中字符 Char 不是数字** Char属性方法结构图如下图所示 ![](https://box.kancloud.cn/69f1f10366524a8de1a3775138cf087d_446x662.png) * 1、关键字 [Char](https://www.w3cschool.cn/doc_kotlin/kotlin-api-latest-jvm-stdlib-kotlin--char-index.html?lang=en)为表示字符型,字符变量用单引号(‘ ’)表示。并**且不能直接视为数字**,不过**可以显式转换为数字**。 ![](https://box.kancloud.cn/53550f523511c764f8af698b2f5069a4_552x239.jpg) 例: ~~~ fun main(args: Array<String>) { var char: Char char = 'a' //char = 1 //会报错"The integer literal does not conform to the expected type Char" println("char ——> $char") } ~~~ 输出结果为: ~~~ char ——> a ~~~ * 2、从char类的属性方法结构图我们可以看到,**Char字符只重载了加上 Int 类型的数字的 + 运算符** ![](https://box.kancloud.cn/4fc5577a85760ac92ab54683919e7ba2_463x103.png) 所以,当我们把一个 Char 类型值和不是 Int 类型的值相加,就报错了。 * 3、其他运算如下图 ~~~ package A基础 fun main(args: Array<String>) { //compareTo方法 println('a'.compareTo('a'))//0 println('a'.compareTo('b'))//-1 println('a'.compareTo('c'))//-1 println('b'.compareTo('a'))//1 println('c'.compareTo('a'))//1 //plus方法 val c1='a'+1 println(c1)//b // val c2='a'+1L //minus方法 val c3='a'-1 val c4='c'-'a' println(c3)//、 println(c4)//2 //自增运算 var a='a' val b=a++ println(a)//b println(b)//a val c=++a println(c)//c //不能在字符的字面量上直接使用 ++ : // val b1='a'++//报错如下:variable expected // val b2=++'a' //范围 println('a'.rangeTo('z'))//a..z for (c in 'a'..'z') print(c)//abcdefghijklmnopqrstuvwxyz println() //显示转换 val i=decimalDigitValue('1') println( i)//1 // decimalDigitValue('a')//异常IllegalArgumentException("Out of range") } fun decimalDigitValue(c: Char): Int { if (c !in '0'..'9') throw IllegalArgumentException("Out of range") return c.toInt() - '0'.toInt() // 显式转换为数字 } ~~~ 运算结果 ``` 0 -1 -1 1 1 b ` 2 b a c a..z abcdefghijklmnopqrstuvwxyz 1 Process finished with exit code 0 ``` * 4、显示转换为其他类型 字符型的变量不仅可以转换为数字,同时也可转换为其他类型 例: ~~~ fun main(args: Array<String>) { var char: Char char = 'a' var var1 = char.toByte() var var2 = char.toInt() var var3 = char.toString() var var4 = char.toFloat() var var5 = char.toShort() println(" var1 ——> $var1 \n var2 ——> $var2 \n var3 ——> $var3 \n var4 ——> $var4 \n var5 ——> $var5") } ~~~ 输出结果为: ~~~ var1 ——> 97 var2 ——> 97 var3 ——> a var4 ——> 97.0 var5 ——> 97 ~~~ >[info] PS:除了可以转换类型外,当变量为英文字母时还支持大小写转换。 示例 ~~~ fun main(args: Array<String>) { /* 当字符变量为英文字母时,大小写的转换 */ var charA: Char = 'a' var charB: Char = 'B' var charNum: Char = '1' var result: Char // 转换为大写 result = charA.toUpperCase() println("result ——> $result") // 转换为小写 result = charB.toLowerCase() println("result ——> $result") //当字符变量不为英文字母时,转换无效 result = charNum.toLowerCase() println("result ——> $result") } ~~~ 输出结果如下 ~~~ result ——> A result ——> b result ——> 1 ~~~ * 5、字符转义 同Java一样,使用某些特殊的字符时,要使用转义。下列是支持的转义序列: ~~~ \t => 表示制表符 \n => 表示换行符 \b => 表示退格键(键盘上的Back建) \r => 表示键盘上的Enter键 \\ => 表示反斜杠 \' => 表示单引号 \" => 表示双引号 \$ => 表示美元符号,如果不转义在kotlin中就表示变量的引用了 其他的任何字符请使用Unicode转义序列语法。例:'\uFF00' ~~~ 示例: ~~~ fun main(args: Array<String>) { println("\n 换行符") println("\t 制表符") println(" \b 退格键") println("\r Enter键同样换行") println('\\') println('\'') println('\"') println('\$') println('\uFF01') } ~~~ 输出结果如下 ~~~ 换行符 制表符  退格键 Enter键同样换行 \ ' " $ ! ~~~ >[info] 注意:当需要可null引用时,像数字一样,字符也会被装箱。装箱操作不会保留同一性(同一对象)。