Kotlin 基本类型

4 篇文章 0 订阅

Kotlin 基本类型


常量与变量


  • 可变变量定义:var <标识符> : <类型> = <初始化值>
  • 不可变变量定义:val <标识符> : <类型> = <初始化值>

⼀次赋值(只读)的局部变量:

    val a: Int = 1 // ⽴即赋值
    val b = 2 // ⾃动推断出 `Int` 类型
    val c: Int // 如果没有初始值类型不能省略
    c = 3 // 明确赋值 

可变变量:

    var x = 5 // ⾃动推断出 `Int` 类型
    x += 1

数字


Kotlin 提供了如下的内置类型来表示数字,Kotlin 中字符不是数字

类型Bit 宽度
Double64
Float32
Long64
Int32
Short16
Byte8

数值常量

  • 十进制: 123 Long 类型⽤⼤写 L 标记: 123L
  • 十六进制: 0x0F
  • 二进制: 0b00001011
  • 注意: 不支持八进制

Kotlin 同样支持浮点数的常规表示方法:

  • 默认 double:123.5 、123.5e10
  • Float 用 f 或者 F 标记: 123.5f

数值使用下划线断句

    val oneMillion = 1_000_000
    val creditCardNumber = 1234_5678_9012_3456L
    val socialSecurityNumber = 999_99_9999L
    val hexBytes = 0xFF_EC_DE_5E
    val bytes = 0b11010010_01101001_10010100_10010010

数值转换

每个数字类型⽀持如下的转换:

  • toByte(): Byte
  • toShort(): Short
  • toInt(): Int
  • toLong(): Long
  • toFloat(): Float
  • toDouble(): Double
  • toChar(): Char

运算

Kotlin支持数字运算的标准集;但对于位运算,没有特殊字符来表示,而只可用中缀方式调用命名函数(只用于 Int 和 Long ):

  • shl(bits) ‒ 有符号左移 (Java 的 << )
  • shr(bits) ‒ 有符号右移 (Java 的 >> )
  • ushr(bits) ‒ 无符号右移 (Java 的 >>> )
  • and(bits) ‒ 位与
  • or(bits) ‒ 位或
  • xor(bits) ‒ 位异或
  • inv() ‒ 位非

字符


字符用 Char 类型表示。它们不能直接当作数字比较,但可以数值计算
在这里插入图片描述

    var c: Char = '1'
    println(c.toInt())
    println(c - 1)

布尔


布尔⽤ Boolean 类型表⽰,它有两个值:true 和 false。


数组


  与 Java 不同的是,Kotlin 中数组是不型变的(invariant)。这意味着 Kotlin 不让我们把 Array 赋值给 Array ,以防止可能的运行时失败
  Kotlin 也有无装箱开销的专门的类来表示原生类型数组: ByteArray 、ShortArray 、IntArray 等等。这些类和 Array 并没有继承关系,但是它们有同样的方法属性集。

val x: IntArray = intArrayOf(1, 2, 3) 
x[0] = x[1] + x[2]

字符串


字符串用 String 类型表示。字符串是不可变的。字符串的元素(字符)可以使用索引运算符访问: s[i] 。可以⽤ for 循环迭代字符串:

    for (c in str) {
        print(c)
    }

字符串赋值

fun main() {
    val s = "Hello, world!\n"
    println(s)
    val text = """ 
        for (c in "foo") 
            print(c) 
    """
    println(text)
    val text2 = """ 
        |for (c in "foo")
        |    print(c) 
        """.trimMargin()
    println(text2)
}

通过 trimMargin() 函数去除前导空格,默认 | 用作边界前缀,但你可以选择其他字符并作为参数传入trimMargin(">")
在这里插入图片描述

字符串模板

字符串可以包含模板表达式 ,即⼀些小段代码,会求值并把结果合并到字符串中。模板表达式以美元符( $ )开头,由一个简单的名字构成;或者用花括号扩起来的任意表达式:

fun main() {
    val i = 10
    val s = "i = $i" // 求值结果为 "i = 10"
    println(s)
    println("i = $i")
    val s2 = "abc"
    val str = "$s2.length is ${s2.length}" // 求值结果为 "abc.length is 3"
    println(str)
    println("$s2.length is ${s2.length}")
}

在这里插入图片描述
这里发现print与Java不同,不可直接用+连接输出字符串
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xhBruce

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

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

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

打赏作者

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

抵扣说明:

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

余额充值