Kotlin 学习——基本类型

    在 Kotlin 中,有着几种基本类型:数字、字符、布尔值、数组与字符串。

  • 数字:Kotlin 对于数字的处理接近 Java,但又有不同。如:数字没有隐式拓宽转换。Kotlin 提供了如下的内置类型来表示数字:
类型 字节
Double 8 64
Float 4 32
Long 8 64
Int 4 32
Short 2 16
Byte 1 8
    在 Java 平台数字是物理存储为 JVM 的原生类型,除非引用可以为空,或者是泛型。如果是泛型会把数字装箱,则不必保留同一性。
fun main(args: Array<String>) {
    val a:Int = 1000
    println(a === a)
    val A1:Int? = a
    val A2:Int? = a
    // === 是比较地址,相当于 Java 中的 ==
    // == 是比较值,相当于 Java 中的 equals()
    println(A1===A2)
    println(A1==A2)
}

    结果:


    Kotlin 没有隐式转换,较小的数据类型不能默认转换为较大数据类型:

fun main(args: Array<String>) {
    val c:Int? = 1
    //因为 d 可能为空,所以要使用 !!.toLong()将 c 转换为 Long 型
    // !!. 相当于会抛出空指针异常
    var d:Long? = c!!.toLong()
    // 但是一般我们用 if 判断
    var e:Long?
    if (d != null){
        d=c.toLong();
    }
    /*
       或者使用表达式,因为这里都是用的常量,不可能为空,所以会有警告
       但是如果这里的 c 是一个函数,返回值可能为空时就可以这么写
       ?. 不为空时获取值,?: 表示为空时获取 2
    */
    val f:Long?= c?.toLong() ?:2

    println(d)
}
    位运算符:
有符号左移 shl(bits)
有符号右移 shr(bits)
无符号右移 ushr(bits)
位与 and(bits)
位或 or(bits)
位异或 xor(bits)
位非 inv(bits)

  • 字符:使用 Char 表示,不能直接当做数字
    比如直接这样比较就会报错:

   

    不过我们可以显示将 Char 转换为 Int 型:
fun main(args: Array<String>) {
    val c:Char = 'a'
    val a =c.toInt()
    println(a)
}

    结果:



    可以看到,显示转换过后,'a’,就是在 ASCII 码中的 97

  • 布尔值:使用 Boolean 表示,有 true 和 false 两个值,若需要可空引用布尔会被装箱。布尔有三种运算:

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

  • 数组:在 Kotlin 中,使用 Array 类来表示,使用 get() 和 set() 来获取和添加元素:
fun main(args: Array<String>) {
    // 首先我们定义一个可能为空的,大小为 5 的数组
    var list: Array<Int?> = arrayOfNulls<Int>(5)
    // 有两种方式来添加数组
    list[0] = 0
    // set() 方法第一个参数是下标值,第二个是要添加的值
    list.set(1,1)
    println(list[0])
    // 获取也可以使用 get() 方法,传入下标值
    println(list.get(1))

    // 使用别的方式来创建一个数组
    val x:IntArray = intArrayOf(1,2,3)
    for (list in x){
        print(list)
    }
}

    结果:


    这里我们创建的都是 Int 型的数组,我们还可以使用相同的方式来创建别的类型的数组

  • 字符串:用 String 表示,字符串是不可变的,字符可以使用下标索引,也可以使用 for 循环:
fun main(args: Array<String>) {
    val str = "abcde"
    println(str[3])
    for (char in str){
        print(char)
    }
}

    结果:


    只要第一个元素为字符串,就可以使用 + 进行连接字符串操作:

fun main(args: Array<String>) {
    val str = "abcde"
    val words = str + 1
    print(words)
}

    结果:


    如果我们连接字符时,第一个不是字符串就会报错:


    None of the following functions can be called with the arguments supplied(在提供的参数中不能调用以下函数)

    一些其它的字符串使用:

fun main(args: Array<String>) {
    // 转义字符
    val text1 = "text1\n"
    // 使用 """ """ 的字符串中间不包含任何转义字符
    val text2 = """text2\ntext2\n"""
    // 字符串模板,使用 $+变量名 来进行合并
    val a = 10
    val text3 = "abc$a"
    // 或者使用 ${} 来合并,会先运行 {} 中的代码
    var b = 10
    val text4 = "abc${++b}"
    println(text1)
    println(text2)
    println(text3)
    println(text4)
    println(b)
}

    结果:




猜你喜欢

转载自blog.csdn.net/young_time/article/details/80443750