Kotlin 基本数据类型

基本常量

  • 十进制:123
  • 长整型以大写的 L 结尾:123L
  • 16 进制以 0x 开头:0x0F
  • 2 进制以 0b 开头:0b00001011
  • 注意:8进制不支持
  • 可以使用下划线使数字常量更易读如:1000_0000_0000

比较两个数字

  • 三个等号 === 表示比较对象地址
  • 两个 == 表示比较两个值大小
      val a: Int = 10000
      println(a === a) // true,值相等,对象地址相等

      //经过了装箱,创建了两个不同的对象
      //注意必须加入? 相当于装箱,否则===的结果仍然是true 而不会是false
      val boxedA: Int? = a
      val anotherBoxedA: Int? = a

      //虽然经过了装箱,但是值是相等的,都是10000
      println(boxedA === anotherBoxedA) //  false,值相等,对象地址不一样
      println(boxedA == anotherBoxedA) // true,值相等

类型转换

由于不同的表示方式,较小类型并不是较大类型的子类型,较小的类型不能隐式转换为较大的类型。 这意味着在不进行显式转换的情况下我们不能把 Byte 型值赋给一个 Int 变量。

    var a: Byte = 1 // OK, 字面值是静态检测的
    var b: Int = b // 错误
    //代用其toInt()方法
    var c:Int=b.toInt()

位操作符

对于Int和Long类型,还有一系列的位操作符可以使用,分别是:

  • shl(bits) – 左移位 (Java’s <<)
  • shr(bits) – 右移位 (Java’s >>)
  • ushr(bits) – 无符号右移位 (Java’s >>>)
  • and(bits) – 与
  • or(bits) – 或
  • xor(bits) – 异或
  • inv() – 反向

字符

  • Kotlin 中的 Char 不能直接和数字操作,Char 必需是单引号 ' 包含起来的。比如普通字符 '0','a'。
    fun decimalDigitValue(c: Char): Int {
        if (c !in '0'..'9')
            throw IllegalArgumentException("Out of range")
          return c.toInt() - '0'.toInt() // 显式转换为数字
    }

布尔

  • 布尔值与java中布尔值类似,唯一的不同是若需要空引用布尔值会被装箱(也就是上篇文章基本语法中的 ? 所进行的操作)

数组

  • 数组用类 Array 实现,并且还有一个 size 属性及 get 和 set 方法,由于使用 [] 重载了 get 和 set 方法,所以我们可以用Array.[index] 获取数组某个位置(index)的值
  • 数组的创建两种方式:一种是使用函数arrayOf();另外一种是使用工厂函数
      //[1,2,3]
    val a = arrayOf(1, 2, 3)
    //[0,2,4]
    val b = Array(3, { i -> (i * 2) })

    //读取数组内容
    println(a[0])    // 输出结果:1
    println(b[1])    // 输出结果:2
  • 除了类Array,还有ByteArray, ShortArray, IntArray,用来表示各个类型的数组,省去了装箱操作,因此效率更高

字符串

  • 和 Java 一样,String 是可不变的。方括号 [] 语法可以很方便的获取字符串中的某个字符,也可以通过 for 循环来遍历:
      var str="abcd"
      for (c in str) {
          println(c)
      }
  • Kotlin 支持三个引号 """ 扩起来的字符串,支持多行字符串,比如:
        val text = """
        多行字符串
        多行字符串
          """
        println(text)   // 输出有一些前置空格
  • String 可以通过 trimMargin() 方法来删除多余的空白。
        val text = """
        -多行字符串
        -删除特定的"-"
        -多行字符串
        -Runoob
         """.trimMargin("-")
        println(text)    // 前置空格删除了

字符串模板

  • 字符串可以包含模板表达式 ,即一些小段代码,会求值并把结果合并到字符串中。 模板表达式以美元符($)开头,由一个简单的名字构成:
          val i = 10
          val s = "i = $i" // 求值结果为 "i = 10"
          println(s)
          val s = "runoob"
          val str = "$s.length is ${s.length}" // 求值结果为 "runoob.length is 6"
          println(str)
         val price = """
          ${'$'}9.99
          """
          println(price)  // 求值结果为 $9.99

你可能感兴趣的:(Kotlin 基本数据类型)