📜 本章目录: 0x00 操作符(operators) 0x01 内建类型(Build-in) 0x02 类型转换:显式类型转换 0x03 在较长数字中使用下划线 0x0
📜 本章目录:
操作符的概念相信大家并不陌生,基础概念我们就不做讲解了,下面我罗列的是 Kotlin 的操作符,这和 C/C++ 几乎是是完全一样的。
数学运算符: + - * / %增减运算符: ++ --比较运算符: < <= > >=赋值运算符: =比较运算符: == !=
我们来列举一些 整型数学运算:
1 + 1 => 248 - 2 => 4650 / 2 => 259 % 3 => 0
下面是 浮点型数学运算:
1.0 / 2.0 => 0.52.0 * 3.5 => 7.0
Kotlin 支持不同的数字类型,例如 Int、Long、Double 和 Float。值得注意的是,它们在输出中都以大写字母开头。虽然它们在内部表示中可能不是对象,但从我们可以调用它们的成员函数和属性的意义上来看,它们是对象,Kotlin 使用大写字母表示对象。
Kotlin 将数字保留为原始类型,但允许像处理对象一样调用数字的方法。也正是因为如此,Kotlin 没有使用包装类。 Kotlin 没有区分基础类型和包装类型,而是通过初始值是否为 null 来区分的。它会随着使用场景的不同,因地制宜地自动编译成 的基本类型或包装类。
表达式翻译为a + ba.plus(b)a – ba.minus(b)a * ba.times(b)a / ba.div(b)a % ba.rem(b)a .. ba.rangeTo(b)a in bb.contains(a)a++ a.inc()a-- a.dec()a += ba.plusAssign(b)a -= ba.minusAssign(b)a *= ba.timesAssign(b)a /= ba.divAssign(b)a %= ba.remAssign(b)a > ba.compareTo(b)> 0 a >= ba.compareTo(b)>= 0 a == ba?.equals(b) ?: (b === null)
在 Kotlin 中,从用户的角度看,任何变量都可以调用成员函数和属性,因此可以说任何东西都是一个对象。一些类型可以有特殊的内部表示方式,例如,数字、字符和布尔值可以在运行时表示为原始值,但对用户而言,它们看起来像普通的类。
🔨 内建类型 (Build-in):
Numbers: Integer, Floating-pointBooleansCharactersStringsArrays
📌 注意:再次强调,所有的 Kotlin 数据类型都是对象!
📚 数据类型:
Kotlin 支持空类型,通过在类型名称后面添加一个问号来表示该类型可以为 null。
例如:可以使用 Int? 代替 Int 来表示一个可为 null 的整型变量。
在 Kotlin 中,整数类型的标准大小与其他语言相同:
无符号整数类型 (Unsigned integer types):
浮点和其他类型:Kotlin 提供了遵循 IEEE 754 标准的浮点类型 Float 和 Double。
运算符符号 || 对类型为 kotlin.Boolean 的两个值执行逻辑或运算,注意:该运算符是惰性的,意味着除非左边的参数计算结果为 false,否则不会计算右边的参数。
运算结果保留运算符的类型:
运算的结果保留运算符的类型,所以 1 / 2 = 0,但 1.0 / 2.0 = 0.5。
Kotlin 数字间不支持隐式类型转换,因此不能直接将 Short 值赋给 Long 变量,
也不能将 Byte 赋给Int。数字的隐式转换是程序中常见的 BUG 来源,
但是可以通过强制转换来避免使用不同类型的值。
❌ 错误演示:将 Byte 声明为 Int :
val b: Byte = 6val i: Int = b
* error: type mismatch: inferred type is Byte but Int was expected
✅ 正确方法:将 Byte 类型转换为 Int:
val b: Byte = 6val i: Int = b.toInt() // 将 Byte 类型转化为 Int 类型println(b)
🚩 运行结果:6
直接 to 就可以了,非常的方便:
📌 注意:小类型不是大类型的子类型,在 Kotlin 中没有数字的隐式拓展转换。
使用下划线使长的数字常量更易读,例如:
val oneMillion = 1_000_000val idNumber = 999_99_9999Lval hexBytes = 0xFF_EC_DE_5Eval bytes = 0b11010010_01101001_10010100_10010010
Kotlin 有两种类型的字符串字面量:转义字符串 和 原始字符串。
字符串是由双引号括起来的任意字符序列,可以包含字母、数字、空格和符号等任意字符:
val s1 = "牛魔酬宾"
和很多语言一样,字符串中可以包含转义字符:
var s2 = "python是世界上最好的语言\n"
在 Kotlin 中,三个双引号(""")用于定义一个原始字符串(raw string)。原始字符串可以包含多行文本和特殊字符,而不需要使用转义字符。使用原始字符串可以简化代码,避免使用转义字符时出现的错误和混淆:
val text = """ var bikes = 50 """
Kotlin 的模板 $ 真的很方便,个人认为甚至比 Python 的 % 还好用(虽说 Python 也有 f-string 插值方式,但 Kotlin 的 $ 似乎更简单),只需在字符串中使用 $ 符号,后面跟着变量名:
val count = 10printIn("Count: $count")
🚩 运行结果:Count: 10
或者是大括号内的表达式:
val s = "abc"println("$s.length is ${s.length}")
🚩 运行结果:abc.length is 3
Kotlin 中的字符串与其他编程语言中的字符串基本相同,使用双引号表示字符串,使用单引号表示单个字符,并且可以使用 + 操作符连接字符串。
模板表达式以 $ 开头,可以是简单的值:
val i = 10println("i = $i")=> i = 10
或者是花括号内的表达式:
val s = "abc"println("$s.length is ${s.length}")=> abc.length is 3
你可以使用字符串模板与变量值结合来创建字符串。在下面的例子中,$today 和 $money 将被替换为相应变量的值,这种操作我们称之为 变量插值。举个例子:
val today = "Thursday"val money = 50println("Today is Fucking Crazy $today !" + "V me $money!")
🚩 运行结果:Today is Fucking Crazy Thursday! V me 50!
字符串模板表达式:
val apple = 10val orange = 5println("我有 ${apple + orange} 个水果")
🚩 运行结果:我有 15 个水果
Kotlin 拥有强大的类型推断能力,通常可以让编译器推断变量类型。但是,你也可以显式声明变量类型。Kotlin 不强制使用不可变性,但建议使用。实质上,应该优先使用 val
而不是 var
。
Kotlin 是一种静态类型语言,类型在编译时解析,不会更改。
冒号表示法:
var width: Int = 12var length: Double = 2.5
注意:一旦变量被你或编译器指定了类型,就不能再更改类型,否则会出现错误。
Kotlin 支持两种类型的变量:可变和不可变。
使用 var 关键字,可以分配一个值,然后在程序中稍后更改该值。
使用 val 关键字,可以分配一个值,但只能分配一次。如果试图将其更改为其他值,则报错。
虽然 Kotlin 不强制实现不可变性,但建议使用它。实质上,应该优先使用 val 而不是 var。
可变 (Mutable):
var score = 10 // 可变
不可变 (Immutable):
val name = "Chaos" // 不可变
💬 代码演示:var 和 val 的区别
让我们看一个例子:你可以使用 var 关键字为 count 变量赋一个值,然后再赋一个新值,因为它是可变的。但如果尝试给使用 val 定义的 size 变量赋一个新值,就会出现错误。
var count = 1count = 2 // 可以修改val size = 1size = 2 // 不可以,修改会报错!=> Error: val cannot be reassigned ❌
需要注意的是,在 Kotlin 中,默认情况下变量不能为 null (我们稍后会讨论 null 安全性的问题)
📌 [ 笔者 ] 王亦优📃 [ 更新 ] 2023.❌ [ 勘误 ] 📜 [ 声明 ] 由于作者水平有限,本文有错误和不准确之处在所难免, 本人也很想知道这些错误,恳望读者批评指正!
📜 参考资料 c++reference[EB/OL]. []. Http://www.cplusplus.com/reference/. Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. . |
来源地址:https://blog.csdn.net/weixin_50502862/article/details/130436156
--结束END--
本文标题: 【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val
本文链接: https://www.lsjlt.com/news/388805.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0