Kotlin学习之基础数据类型

Kotlin学习之基础数据类型

@(Kotlin学习)

Kotlin的基础数据类型包括数字类型、字符类型、字符串类型和布尔类型。

一、数字类型

除char类型外,Java中的基本数据类型在Kotlin中都有相应的数据类型,而且长度都是相同的:

Kotlin类型Java类型长度
Bytebyte8
Shortshort16
Intint32
Longlong64
Floatfloat32
Doubledouble64

因为Kotlin中不存在基本数据类型,所以不存在装箱拆箱的问题。Kotlin没有自动类型转换,对于数字类型间的相互转换,可以使用数字类型的to方法:

val i:Int=12
val l:Long =i.toLong()
1.1.1字面常量

数值常量字面值有以下几种(不支持八进制
- 十进制:123(Long类型用大写L标记)
- 十六进制:0x0F
- 二进制:0b00001011

Kotlin浮点数的常规表示方法:
- 默认double:123.5
- Float用f或者F标记:123.5f

1.1.2数字的下划线(自1.1起)

可以使用下划线是的数字常量更易读:

val oneMillion = 1_000_000
1.1.3表示方式

在Java平台数字是物理存储为JVM的原生类型,除非需要一个可空的引用或泛型。后者情况下会把数字装箱。

1.1.4显示转换

由于不同的表示方式,较小类型并不是较大类型的子类型。较小的类型不能隐式转换为较大的类型。

每个数字类型都支持如下的转换:
- toByte():Byte
- toShort():Short
- toInt():Int
- toLong():Long
- toFloat():Float
- toDouble():Double
- toChar():Char

1.1.5运算

Kotlin支持数字运算的标准集,运算被定义为相应的类成员。

对于位运算符,没有特殊字符来表示,而至可用中缀方式调用命名函数。例如:

val x = (1 shl 2) and 0x000FF000

如下是完整的位运算列表(只用于Int和Long):
- shl(bits):有符号左移(<<)
- shr(bits):有符号右移(>>)
- ushr(bits):无符号右移(>>>)
- and(bits):位于
- or(bits):位或
- xor(bits):位异或
- inv():位非

1.1.6浮点数比较

浮点数的操作如下:
- 相等性检测:a==ba!=b
- 比较操作符:a<b、a>b、a<=b、a>=b
- 区间实例以及区间检测:a..b、x in a..b、x !in a..b

二、Char类型

Kotlin中的Char类型并不是一个数字,它是一个真正的“字符”。

注意:
- 字符用Char类型表示,不能直接当做数字。
- 字符字面值用单引号括起来:’1’。
- 特殊字符可以用反斜杠转义。
- 编码其他字符要用Unicode转义序列语法:’\uFF00’。
- 当需要可空引用时,像数字、字符会被装箱()。

三、String类型

Kotlin中的String类型与Java中的类似,用String类型表示,都是不可变的对象,但是kotlin.String类提供的函数很少,只有3个常用函数和1个属性:

public override val length: Int
public override fun get(index: Int): Char //与 Java 中的 charAt() 方法相同
public override fun subSequence(startIndex: Int, endIndex: Int): CharSequence
public override fun compareTo(other: String): Int

注意:
- Kotlin的字符串可以视为一个CharArray对象,可用来遍历字符串中的每个字符;
- Kotlin的字符串支持特有的字符串模板功能,可以视为一种转义表达式的方法;
- 字符串模板的写法,比Java中用“+”号连接字符串中的额可变与不可变部分的写法可读性更强
- 字符串的元素——字符可以使用索引运算符访问:s[i]

3.1字符串字面值
  1. Kotlin有两种类型的字符串字面值:转义字符串可以有转义字符,以及原生字符串可以包含换行和任意文本。

  2. 转义采用传统的反斜杠方式。

  3. 原生字符串使用三个引号(”“”)分界符括起来,内部没有转义并且可以包含换行和任何其他字符。
  4. 通过trimMargin()函数去除前导空格。
  5. 默认|用作边界前缀,可以选择其他字符并作为参数传入。
3.2字符串模板
  1. 字符串可以包含模板表达式,即一些小段代码
    ,会求值并把结果合并到字符串中。模板表达式以美元符($)开头,由一个简单的名字构成:
val i =10
val s ="i=$i"

或者用花括号括起来的任意表达式:

val s = "abc"
val str = "$s.length is ${s.length}"
  1. 原生字符串和转义字符串内部都支持模板。如果需要在原生字符中表示字面值$字符,可以用如下语法:
val price = """
${'$'}9.99
"""

四、Boolean类型

与Java中的boolean类型完全相同,有truefalse两个值。

内置的布尔运算有
- ||:短路或
- &&:短路与
- !:非

学海无涯苦作舟

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员丶星霖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值