Kotlin学习(3)-基础之基本类型

本文介绍了Kotlin中的基本数据类型,包括数字的十进制、Long、十六进制、二进制表示,字符的表示及特殊字符转义,布尔值以及数组和字符串的特性。Kotlin中没有隐式类型转换,但提供了显示转换方法,如toByte()等。同时,文章详细阐述了位运算以及字符串的操作,如trimMargin()和字符串模板。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先牢记一个知识点:Kotlin中一切皆是对象

Kotlin中不再像Java那样拥有所谓的primitive主数据类型(基本数据类型),取而代之的是封装好的类型。
它们是:数字、字符、布尔值、数组和字符串(下图提供了Java的基本数据类型作对比)。

1 Kotlin中表示数字

type(类型)description(描述)bit width(占用空间)
Double双精度浮点型64
Float浮点型32
Long长整型64
Int整型32
Short短整型16
Byte字节8

字符在Kotlin中不是数字

Java基本数据类型参考
Java基本数据类型

1.1 数字常量表示

  • 十进制:1992
  • Long类型:1992L
  • 十六进制:0x0F
  • 二进制:0b00001011
  • 浮点数double(默认):123.5
  • Float:123.5f

(Kotlin不支持八进制)

//使用下划线易读
val oneMillion = 1_000_000

1.2 表示方式

Kotlin中,三个等号"===“表示比较对象地址,两个”=="表示比较两个值大小。

val a: Int = 10
println(a===a)//输出为true,值相等,地址相等

//经过了数字装箱
val boxedA: Int? = a
val anotherBoxedA:Int? = a
println(boxedA===anotherBoxedA)//输出为false,地址不同

println(boxedA == anotherBoxedA)//输出为true,保留了值相等

1.3 显示转换

Kotlin中较小的类型不能隐式转换为较大的类型,因为较小类型不是较大类型的子类。(对比Java的隐式转换)Kotlin提供了类型转换函数来拓宽数字:

val b: Byte = 1
val a: Int = b.toInt()//显示拓宽
print(a)

  • toByte()
  • toShort()
  • toInt()
  • toLong()
  • toFloat()
  • toDouble()
  • toChar()

1.4 运算

位运算支持

  • shl(bits):有符号左移
  • shr(bits):有符号右移
  • ushr(bits):无符号右移
  • and(bits):位与
  • or(bits):位或
  • xor(bits):位异或
  • inv(位非)

字符

字符用char表示,不能直接当数字。字符字面值用单引号括起来 ‘1’。特殊字符可以用反斜杠转义。支持转义序列:\t、\b、\n、\r、'、"、\、$.

布尔

布尔用Boolean类表示,它有两个值:true和false.

内置的布尔运算有:

  • || 短路逻辑或
  • && 短路逻辑与
  • ! 逻辑非

数组

数组在Kotlin中使用Array类来表示,它定义了get与set函数(按照运算符重载约定转变为[])以及size属性。创建数组的方法:

  1. arrayOf()或arrayOfNulls()
  2. 构造函数Array
//1.数组-arrayOf
val a = arrayOf(1,2,3)
println(a[0])//[]运算符

//2.数组-构造函数Array
val asc = Array(5){i -> (i * i).toString()}
asc.forEach { 
    println("array result = $it")
}

与Java不同的是,Kotlin中数组是不型变的。

Kotlin也有表示原生类型数组:ByteArray、ShortArray、IntArray等。

字符串

字符串用String类型表示,字符串是不可变的。

  • 使用索引运算符(s[i])访问字符串中的字符
  • 可以用"+"操作符连接字符串
  • 可以使用for循环迭代字符串
  • 字符串字面值之转义字符串
  • 字符串字面值之原始字符串
  • trimMargin()函数可以用来去除前导空格
  • 字符串模板,模板表达式以符号$开头
        val name = "Android"
        println("name[2] = " + name[2])//使用索引运算符

        //迭代字符串
        for (c in name) {
            println("c = $c")
        }

        //+操作符
        val newName = name + " is funny!"
        println("result = $newName")

        //字符串字面值
        val s = "Hello World!\n"
        val text = """
            aoe,
            dddd,
            fff
        """.trimMargin()
        println("text = $text")

输出结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值