1 变量声明

var a : Int // 声明整数类型变量

var b : Int = 1 // 声明整数类型变量, 同时赋初值为1

var c = 1 // 声明整数类型变量, 同时赋初值为1

val d = 1 // 声明整数类型常量, 值为1(后面不能改变d的值)

        变量命名规范如下。

变量名可以由字母、数字、下划线(_)和美元符号($)组成,但是不能以数字开头,且大小写敏感。不能有空格、@、#、+、-、/ 等符号。应该使用有意义的名称,达到见名知意的目的,最好以小写字母开头。不能与 Kotlin 语言的关键字或是基本数据类型重名。

2 基本数据类型

2.1 空类型

        Kotlin 中空类型使用 Unit 表示,等价与 Java 中的 void。

        1)Unit 的定义

public object Unit {

override fun toString() = "kotlin.Unit"

}

        2)Unit 作为变量使用

fun main() {

var a : Unit = Unit

println(a) // kotlin.Unit

}

        3)Unit 作为函数返回值使用

fun myFun() : Unit {

println("定义一个没有返回值的函数")

}

        说明:当函数无返回值时,可以省略 Unit。

2.2 数字类型

2.2.1 整数类型

类型大小(位)最小值最大值案例Byte8-128127 var a: Byte = 1 var a = 1 val a = 0b1001 // 二进制 val a = 0xAF // 十六进制 Short16-3276832767 var a: Short = 1 var a = 1 Int32 -2,147,483,648 (-2^31) 2,147,483,648(2^31-1) var a: Int = 1 var a = 1 var a = 1_000_000 Long64-9,223,372,036,854,775,808(-2^63) 9,223,372,036,854,775,807 (2^63-1) var a: Long = 1L var a = 1L UByte80255 var a: UByte = 1u var a = 1u UShort16065535 var a: UShort = 1u var a = 1u UInt320 4,294,967,295 (2^32-1) var a: UInt = 1u var a = 1u ULong640 18,446,744,073,709,551,615 (2^64-1) var a: ULong = 1uL var a = 1uL var a = 0xFFF_FFF_FFFuL 

        进制表示如下。

// 二进制

val a = 0b1001 // 0b是二进制前缀, 1001对应十进制的9

// 十六进制

val a = 0xAF // 0x是十六进制前缀, AF对应十进制的31

        注意:Kotlin 没有八进制前缀表示。

2.2.2 浮点类型

类型大小(位) 符号位(S)/ 阶码(E)/ 尾数(M) 最小值/ 最大值/ 最小正数 有效位数案例Float321S + 8E + 23M -3.4028235E38 3.4028235E38 1.4E-45 6 var a: Float = 1.0F var a = 1.0F var a = 1.0f Double641S + 11E + 52M -1.7976931348623157E308 1.7976931348623157E308 4.9E-324 15 var a: Double = 1.0 var a = 1.0

        浮点数编码原理详见 → 浮点数编码原理。

2.2.3 运算符

运算符描述作用域优先级案例+加法整数/浮点数 作为一元运算符时,优先级为1 作为二元运算符时,优先级为3 1 + 2 = 3 -减法整数/浮点数 作为一元运算符时,优先级为1 作为二元运算符时,优先级为3 1 - 2 = -1*乘法整数/浮点数22 * 3 = 6/整除/除法整数/浮点数2 3 / 2 = 1 3.0 / 2 = 1.5 3 / 2.0 = 1.5 %取余整数/浮点数27 % 3 = 1++加1整数/浮点数1 a++(先使用, 后加1) ++a(先加1, 后使用) --减1整数/浮点数1 a--(先使用, 后减1) --a(先减1, 后使用) =赋值所有类型9a = 1+= 加赋值 整数/浮点数9a += 1 ⇔ a = a + 1-=减赋值整数/浮点数9a -= 2 ⇔ a = a - 2*=乘赋值整数/浮点数9a *= 3 ⇔ a = a * 3/=除赋值整数/浮点数9a /= 4 ⇔ a = a / 4%=取余赋值整数/浮点数9a %= 5⇔ a = a % 5shl有符号左移Int/Long4 3 shl 1 = 6 -1 shl 1 = -2 -3 shl 1 = -6 shr有符号右移Int/Long4 3 shr 1 = 1 -1 shr 1 = -1 -3 shr 1 = -2 ushr无符号右移Int/Long4 3 ushr 1 = 1 -1 ushr 1 = 2147483647 -3 ushr 1 = 2147483646 and按位与Int/Long5 // 1001 and 0011 = 0001 9 and 3 = 1 or按位或Int/Long6 // 1001 or 0011 = 1011 9 or 3 = 11 xor按位异或Int/Long7 // 1001 xor 0011 = 1010 9 or 3 = 10 inv按位取反Int/Long1 9.inv() = -10 (-1).inv() = 0 (-3).inv() = 2 ..闭区间整数8 1..4 // 1, 2, 3, 4 ..<左开右闭区间整数81..<4 // 1, 2, 3until左开右闭区间整数81 until 4 // 1, 2, 3

2.3 布尔类型

2.3.1 布尔类型

类型大小(位)取值案例Boolean1true / false var a: Boolean = true var a = false

2.3.2 运算符

运算符描述作用域优先级案例==等于整数/布尔/字符 1 1 == 2 // false 1 == 1 // true !=不等于整数/布尔/字符 1 1 != 2 // true 1 != 1 // false <小于整数/浮点数/字符11 < 2 // true>大于整数/浮点数/字符1 1 > 2 // false <=小于等于整数/字符11 <= 2 // true>=大于等于整数/字符11 >= 2 // falsein在范围内整数/字符13 in 1..9 // true!in不在范围内整数/字符13 !in 1..9 // false!非布尔2 !true // false !false // true &&与布尔3true && false // false||或布尔4true || false // true

2.4 字符类型

2.4.1 字符类型

类型大小(位)案例Char16 var a: Char = ‘A’ var a = 'A' var a = '好' var a = '\u725B' // 牛 var a = Char(66) // B var a = 'A' + 4 // E 'A'.code // 65

2.4.2 转义字符

\t —— Tab制表符

\b —— 退格

\n —— 换行(LF)

\r —— 回车(CR)

\' —— 单引号

\" —— 双引号

\\ —— 反斜杠

\$ —— 美元符号

2.5 字符串类型

2.5.1 字符串的定义

var str1 : String = "abc"

var str2 = "abc"

var str3 = "abc" + "def" // "abcdef"

// 原始字符串

var str4 = """

第一行

第二行

第三行

"""

// 字符串模板

var count = 15

var str5 = "买了${count}个苹果" // 买了15个苹果

        通过下标即可访问字符串中元素,如下。

var str = "abc"

var c1 = str[0] // 'a'

var c2 = str.elementAt(1) // 'b'

2.5.2 字符串函数

        Kotlin 中 String 类继承 CharSequence 类,在 _String.kt、StringsJVM.kt、StringNumberConversionsJVM.kt 等文件中定义了一些 CharSequence、String 的扩展函数。

        1)判空

// length == 0

public inline fun CharSequence.isEmpty(): Boolean

// length > 0

public inline fun CharSequence.isNotEmpty(): Boolean

// this == null || this.length == 0

public inline fun CharSequence?.isNullOrEmpty(): Boolean

// length == 0 || indices.all { this[it].isWhitespace() }

public actual fun CharSequence.isBlank(): Boolean

// !isBlank()

public inline fun CharSequence.isNotBlank(): Boolean

// this == null || this.isBlank()

public inline fun CharSequence?.isNullOrBlank(): Boolean

        2)去掉首位空字符

public inline fun String.trim(): String

        3)查找字符

public expect fun CharSequence.elementAt(index: Int): Char

public inline fun CharSequence.find(predicate: (Char) -> Boolean): Char

public inline fun CharSequence.findLast(predicate: (Char) -> Boolean): Char

public fun CharSequence.first(): Char

public inline fun CharSequence.first(predicate: (Char) -> Boolean): Char

public fun CharSequence.last(): Char

public inline fun CharSequence.last(predicate: (Char) -> Boolean): Char

public inline fun CharSequence.random(): Char

        4)查找字符索引

public inline fun CharSequence.indexOfFirst(predicate: (Char) -> Boolean): Int

public inline fun CharSequence.indexOfLast(predicate: (Char) -> Boolean): Int

         5)过滤字符

public inline fun String.filter(predicate: (Char) -> Boolean): String

public inline fun String.filterIndexed(predicate: (index: Int, Char) -> Boolean): String

public inline fun String.filterNot(predicate: (Char) -> Boolean): String

        6)统计字符个数

// 返回length

public inline fun CharSequence.count(): Int

// 统计字符串中满足条件的字符个数

public inline fun CharSequence.count(predicate: (Char) -> Boolean): Int

         7)字符串匹配

// 判断字符串是否以xxx开头

public fun CharSequence.startsWith(char: Char, ignoreCase: Boolean = false): Boolean

public fun CharSequence.startsWith(prefix: CharSequence, ignoreCase: Boolean = false): Boolean

public fun CharSequence.startsWith(prefix: CharSequence, startIndex: Int, ignoreCase: Boolean = false): Boolean

// 判断字符串是否以xxx结尾

public fun CharSequence.endsWith(char: Char, ignoreCase: Boolean = false): Boolean

public fun CharSequence.endsWith(suffix: CharSequence, ignoreCase: Boolean = false): Boolean

        8)获取子串

public inline fun CharSequence.substring(startIndex: Int, endIndex: Int = length): String

public fun String.substring(range: IntRange): String

public fun String.slice(indices: IntRange): String

public fun String.take(n: Int): String

public fun String.takeLast(n: Int): String

        9)字符串分割

public fun CharSequence.split(vararg delimiters: Char, ignoreCase: Boolean = false, limit: Int = 0): List

public fun CharSequence.split(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): List

        说明:字符串分割支持正则匹配,详见 → 正则表达式(Regular Expression)详解。 

        10)字串替换

// 替换所有匹配的字符或字符串

public actual fun String.replace(oldChar: Char, newChar: Char, ignoreCase: Boolean = false): String

public actual fun String.replace(oldValue: String, newValue: String, ignoreCase: Boolean = false): String

// 替换第一个匹配的字符或字符串

public actual fun String.replaceFirst(oldChar: Char, newChar: Char, ignoreCase: Boolean = false): String

public actual fun String.replaceFirst(oldValue: String, newValue: String, ignoreCase: Boolean = false): String

// 将第一个匹配的字符或字符串前面的字符串替换为指定字符或字符串

public fun String.replaceBefore(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String

public fun String.replaceBefore(delimiter: String, replacement: String, missingDelimiterValue: String = this): String

// 将第一个匹配的字符或字符串后面的字符串替换为指定字符或字符串

public fun String.replaceAfter(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String

public fun String.replaceAfter(delimiter: String, replacement: String, missingDelimiterValue: String = this): String

// 将指定索引范围的字符串替换为新字符串

public inline fun String.replaceRange(startIndex: Int, endIndex: Int, replacement: CharSequence): String

public inline fun String.replaceRange(range: IntRange, replacement: CharSequence): String

        说明:字符串替换支持正则匹配,详见 → 正则表达式(Regular Expression)详解。

         11)字符串反转

public inline fun String.reversed(): String

        12)大小写转换

// 转为大写字符串, locale可以传入Locale.ROOT

public inline fun String.uppercase(locale: Locale): String

// 转为小写字符串, locale可以传入Locale.ROOT

public inline fun String.lowercase(locale: Locale): String

        13)数据类型转换

public actual inline fun String.toInt(): Int

public actual inline fun String.toLong(): Long

public actual inline fun String.toFloat(): Float

public actual inline fun String.toDouble(): Double

public inline fun String.toBigInteger(): java.math.BigInteger

public inline fun String.toBigDecimal(): java.math.BigDecimal

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: