【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val

这篇具有很好参考价值的文章主要介绍了【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val,kotlin,安卓,原力计划

📜 本章目录:

0x00 操作符(operators)

0x01 内建类型(Build-in)

0x02 类型转换:显式类型转换

0x03 在较长数字中使用下划线

0x04 字符串(String)

0x05 字符串模板(String Templates)

0x06 字符串连接(变量插值)

0x06 指定变量类型

0x07 可变 var 和不可变 val


0x00 操作符(operators)

操作符的概念相信大家并不陌生,基础概念我们就不做讲解了,下面我罗列的是 Kotlin 的操作符,这和 C/C++ 几乎是是完全一样的。

数学运算符:  +  -  *  /  %

增减运算符:  ++  --

比较运算符:  <   <=   >   >=

赋值运算符:  =

比较运算符:  ==   !=

我们来列举一些 整型数学运算

1 + 1   =>  2
48 - 2  =>  46
50 / 2  =>  25
9 % 3   =>  0

下面是 浮点型数学运算

1.0 / 2.0  =>  0.5
2.0 * 3.5  =>  7.0

Kotlin 支持不同的数字类型,例如 Int、Long、Double 和 Float。值得注意的是,它们在输出中都以大写字母开头。虽然它们在内部表示中可能不是对象,但从我们可以调用它们的成员函数和属性的意义上来看,它们是对象,Kotlin 使用大写字母表示对象。

【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val,kotlin,安卓,原力计划

Kotlin 将数字保留为原始类型,但允许像处理对象一样调用数字的方法。也正是因为如此,Kotlin 没有使用包装类。 Kotlin 没有区分基础类型和包装类型,而是通过初始值是否为 null 来区分的。它会随着使用场景的不同,因地制宜地自动编译成  的基本类型或包装类。

【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val,kotlin,安卓,原力计划

表达式		翻译为

a + b		a.plus(b)
a – b		a.minus(b)
a * b		a.times(b)
a / b		a.div(b)
a % b		a.rem(b)

a .. b		a.rangeTo(b)
a in b		b.contains(a)

a++		    a.inc()
a--		    a.dec()

a += b		a.plusAssign(b)
a -= b		a.minusAssign(b)
a *= b		a.timesAssign(b)
a /= b		a.divAssign(b)
a %= b		a.remAssign(b)

a > b		a.compareTo(b)> 0 
a >= b		a.compareTo(b)>= 0 

a == b		a?.equals(b) ?: (b === null) 

0x01 内建类型(Build-in)

在 Kotlin 中,从用户的角度看,任何变量都可以调用成员函数和属性,因此可以说任何东西都是一个对象。一些类型可以有特殊的内部表示方式,例如,数字、字符和布尔值可以在运行时表示为原始值,但对用户而言,它们看起来像普通的类。

🔨 内建类型 (Build-in):

Numbers: Integer, Floating-point
Booleans
Characters
Strings
Arrays

📌 注意:再次强调,所有的 Kotlin 数据类型都是对象!

📚 数据类型:

  • 布尔型(Boolean):表示 true 和 false。
  • 字符型(Char):表示单个字符,用单引号括起来。
  • 字符串型(String):表示多个字符,用双引号括起来。
  • 整型(Int):表示整数。
  • 长整型(Long):表示长整数。
  • 浮点型(Float):表示单精度浮点数。
  • 双精度型(Double):表示双精度浮点数。
  • 数组(Array):表示一组同类型的数据集合。
  • 字节型(Byte):表示字节数据。
  • 短整型(Short):表示短整数。

Kotlin 支持空类型,通过在类型名称后面添加一个问号来表示该类型可以为 null。

例如:可以使用 Int? 代替 Int 来表示一个可为 null 的整型变量。

在 Kotlin 中,整数类型的标准大小与其他语言相同:

【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val,kotlin,安卓,原力计划

无符号整数类型 (Unsigned integer types):

【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val,kotlin,安卓,原力计划

浮点和其他类型:Kotlin 提供了遵循 IEEE 754 标准的浮点类型 Float 和 Double。

运算符符号 || 对类型为 kotlin.Boolean 的两个值执行逻辑或运算,注意:该运算符是惰性的,意味着除非左边的参数计算结果为 false,否则不会计算右边的参数。

【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val,kotlin,安卓,原力计划

运算结果保留运算符的类型:

【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val,kotlin,安卓,原力计划

 运算的结果保留运算符的类型,所以 1 / 2 = 0,但 1.0 / 2.0 = 0.5。

0x02 类型转换:显式类型转换

Kotlin 数字间不支持隐式类型转换,因此不能直接将 Short 值赋给 Long 变量,

也不能将 Byte 赋给Int。数字的隐式转换是程序中常见的 BUG 来源,

但是可以通过强制转换来避免使用不同类型的值。

❌ 错误演示:将 Byte 声明为 Int :

val b: Byte = 6
val i: Int = b

* error: type mismatch: inferred type is Byte but Int was expected

✅ 正确方法:将 Byte 类型转换为 Int:

val b: Byte = 6
val i: Int = b.toInt()  // 将 Byte 类型转化为 Int 类型

println(b)

🚩 运行结果:6

直接 to 就可以了,非常的方便:

 【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val,kotlin,安卓,原力计划

📌 注意:小类型不是大类型的子类型,在 Kotlin 中没有数字的隐式拓展转换。

0x03 在较长数字中使用下划线

使用下划线使长的数字常量更易读,例如:

val oneMillion = 1_000_000
val idNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010

0x04 字符串(String)

Kotlin 有两种类型的字符串字面量:转义字符串原始字符串

字符串是由双引号括起来的任意字符序列,可以包含字母、数字、空格和符号等任意字符:

val s1 = "牛魔酬宾"

和很多语言一样,字符串中可以包含转义字符:

var s2 = "Python是世界上最好的语言\n"

在 Kotlin 中,三个双引号(""")用于定义一个原始字符串(raw string)。原始字符串可以包含多行文本和特殊字符,而不需要使用转义字符。使用原始字符串可以简化代码,避免使用转义字符时出现的错误和混淆:

val text = """
  var bikes = 50 
"""

0x05 字符串模板(String Templates)

Kotlin 的模板 $ 真的很方便,个人认为甚至比 Python 的 % 还好用(虽说 Python 也有 f-string 插值方式,但 Kotlin 的 $ 似乎更简单),只需在字符串中使用 $ 符号,后面跟着变量名:

val count = 10
printIn("Count: $count")

🚩 运行结果:Count: 10

或者是大括号内的表达式:

val s = "abc"
println("$s.length is ${s.length}")

🚩 运行结果:abc.length is 3

0x06 字符串连接(变量插值)

Kotlin 中的字符串与其他编程语言中的字符串基本相同,使用双引号表示字符串,使用单引号表示单个字符,并且可以使用 + 操作符连接字符串。

模板表达式以 $ 开头,可以是简单的值:

val i = 10
println("i = $i")
=> i = 10

或者是花括号内的表达式:

val s = "abc"
println("$s.length is ${s.length}")
=> abc.length is 3

【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val,kotlin,安卓,原力计划

你可以使用字符串模板与变量值结合来创建字符串。在下面的例子中,$today 和 $money 将被替换为相应变量的值,这种操作我们称之为 变量插值。举个例子:

val today = "Thursday"
val money = 50
println("Today is Fucking Crazy $today !" + "V me $money!")

🚩 运行结果:Today is Fucking Crazy Thursday! V me 50!

【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val,kotlin,安卓,原力计划

字符串模板表达式:

val apple = 10
val orange = 5
println("我有 ${apple + orange} 个水果")

 🚩 运行结果:我有 15 个水果

0x06 指定变量类型

Kotlin 拥有强大的类型推断能力,通常可以让编译器推断变量类型。但是,你也可以显式声明变量类型。Kotlin 不强制使用不可变性,但建议使用。实质上,应该优先使用 val 而不是 var

Kotlin 是一种静态类型语言,类型在编译时解析,不会更改。

冒号表示法:

var width: Int = 12
var length: Double = 2.5

注意:一旦变量被你或编译器指定了类型,就不能再更改类型,否则会出现错误。

0x07 可变 var 和不可变 val

Kotlin 支持两种类型的变量:可变和不可变。

使用 var 关键字,可以分配一个值,然后在程序中稍后更改该值。

使用 val 关键字,可以分配一个值,但只能分配一次。如果试图将其更改为其他值,则报错。

虽然 Kotlin 不强制实现不可变性,但建议使用它。实质上,应该优先使用 val 而不是 var。

可变 (Mutable):

var score = 10   // 可变

不可变 (Immutable):

val name = "Chaos"   // 不可变

💬 代码演示:var 和 val 的区别

让我们看一个例子:你可以使用 var 关键字为 count 变量赋一个值,然后再赋一个新值,因为它是可变的。但如果尝试给使用 val 定义的 size 变量赋一个新值,就会出现错误。

var count = 1
count = 2      // 可以修改


val size = 1
size = 2       // 不可以,修改会报错!
=> Error: val cannot be reassigned ❌

需要注意的是,在 Kotlin 中,默认情况下变量不能为 null (我们稍后会讨论 null 安全性的问题)

【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val,kotlin,安卓,原力计划

📌 [ 笔者 ]   王亦优
📃 [ 更新 ]   2023.
❌ [ 勘误 ]   /* 暂无 */
📜 [ 声明 ]   由于作者水平有限,本文有错误和不准确之处在所难免,
              本人也很想知道这些错误,恳望读者批评指正!

📜 参考资料 

C++reference[EB/OL]. []. http://www.cplusplus.com/reference/.

Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. .

百度百科[EB/OL]. []. https://baike.baidu.com/.文章来源地址https://www.toymoban.com/news/detail-516039.html

到了这里,关于【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】表达式求值相关问题汇总—>隐式类型转换(整型提升)、算数转换与操作符优先级汇总(收藏查阅)

     👀 樊梓慕: 个人主页   🎥 个人专栏: 《C语言》《数据结构》《蓝桥杯试题》 🌝 每一个不曾起舞的日子,都是对生命的辜负。 目录 前言: 一、隐式类型转换 (一)整型提升的意义 (二)如何进行整型提升呢? 二、算数转换 三、操作符的属性 (一)操作符优先级汇

    2024年02月16日
    浏览(31)
  • kotlin中集合操作符

    1.总数操作符 any —— 判断集合中 是否有满足条件 的元素; all —— 判断集合中的元素 是否都满足条件; none —— 判断集合中是否 都不满足条件,是则返回true; count —— 查询集合中 满足条件 的 元素个数; reduce —— 从 第一项到最后一项进行累计 ; reduceRight —— 从 最

    2024年02月06日
    浏览(28)
  • VEX —— 数据类型及操作符

    目录 一,数据类型 类型种类 struct 类型转换 二,操作符 点操作符 Dot operator 比较操作符 Comparisons 类型交互 操作符优先级 三,注释 四,保留的         VEX即可在32模式下运行,也可在64位模式下运行;在32位下,所有float/vector/integer都是32位;在64位下,它们就是

    2024年02月10日
    浏览(39)
  • 【C语言】中的位操作符和移位操作符,原码反码补码以及进制之间的转换

    欢迎大家来到c语言知识小课堂,今天的知识点是操作符和进制 同样都是数字1111,不同进制下数字的大小不同,第二行代表的是其各位数字十进制下的大小,将各位数字的十进制大小相加即1111在这个进制下转化为十进制的大小,从图中我们可以看出来 进制的定义:从右往左

    2024年02月22日
    浏览(37)
  • C语言操作符篇章+系统讲解分析+深入理解操作符+原反补结合的具体应用+根源进行讲解+进制转换+操作环境+实例剖析+上万字+百张图片精细化讲解

    在讲解操作符之前需要讲解一下原反补和进制之间的转换 并且在讲解操作符的时候会重点对难点进行讲解,也就是算数操作符和逻辑操作符 并且会在讲解附带实例 和最后面的代码分析 ————————————————————————————————————————

    2024年02月20日
    浏览(34)
  • C语言基础之——操作符(上)

    本篇文章,我们将展开讲解C语言中的各种常用操作符,帮助大家更容易的解决一些运算类问题。 这里提醒一下小伙伴们,本章知识会大量涉及到二进制序列,不清楚二进制序列的小伙伴,可以去阅读我的另一篇文章 《数据在内存中的存储》 学习了解。 目录 一.操作符分类

    2024年02月11日
    浏览(32)
  • 【C语言初阶】带你轻松玩转所有常用操作符(1) ——算数操作符,移位操作符,位操作符

    君兮_的个人主页 勤时当勉励 岁月不待人 C/C++ 游戏开发 Hello,这里是君兮_,最近要准备期末复习了,可能更新的就不会那么频繁了,下个星期恢复正常更新。 今天给大家带来的是操作符详解,由于这部分的内容比较多,可能会分成几部分讲,今天带来的是第一部分的内容,废

    2024年02月11日
    浏览(30)
  • 【PostgreSQL】函数与操作符-比较函数和操作符

    PostgreSQL中的比较函数和操作符用于比较两个表达式的值。它们的作用是确定表达式的值是否满足某种条件,例如等于、大于、小于等。 比较函数是一个接受两个参数的函数,返回一个布尔值,表示两个参数是否满足某种条件。例如,equal()函数用于判断两个参数是否相等,

    2024年01月17日
    浏览(40)
  • 初始C语言——详细讲解操作符以及操作符的易错点

     第一章 “C“浒传——初识C语言(更适合初学者体质哦!)  第二章 详细认识分支语句和循环语句以及他们的易错点   第三章 初阶C语言——特别详细地介绍函数  第四章 初始C语言——详细地讲解数组的内容以及易错点  第五章  初始C语言——详细讲解操作符以及操

    2024年02月13日
    浏览(38)
  • 【c语言操作符系列1】^(异或操作符)讲解和多种例题详解

    目录 一、^ 是什么(^称为异或) 二、^的规律(特点) 三、可利用^秒杀的常见例题(重点) 1、消失的数字  2、不一样的人生密码 3、交换两个数(不能创建中间变量) 4、找出只出现一个的两个数字 是一种操作符, 针对二进制异或而言的 ,两个数对应的二进制位相同,异或

    2024年02月16日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包