• Kotlin 学习 (三)


    Kotlin入门第三课:数据类型

    转载...........

    Kotlin的数据类型与Java类似,因此这篇文章主要看Kotlin的几点改变(改进)。

    1. 内置数据类型

    Double--64位    Float--32位

    Long--64位        Int--32位

    Short--16位       Byte--8位

    Kotlin中字符型不再是基础类型,下面会进行介绍。

    1.1 类型名称

    类型只有首字母大写1种名称,如32位整型为Int,Java是int和Integer并存。

    Kotlin只有一种形式:

    1 var vInt: Int = 5

    这样的改变会让开发者更加高效,不用多花精力在不同场景下切换使用的类型。

    Java支持封箱和拆箱:

    1 int vint = 5;
    2 Integer vInt = vint;
    3 vint = vInt;

    Java中具体化泛型等情况下是必须要用Integer类型的,一般的整型变量用int即可,Kotlin现在统一使用Int。

    1.2 类型转换

    类型之间不能进行隐式转换,Java是允许的。

    Kotlin代码第2-5行是编译不过的:

    1 var vInt: Int = 5
    2 var vLong: Long = vInt
    3 var vLong: Long = (Long) vInt
    4 vInt = vLong
    5 vInt = (Int) vLong

    错误信息:The integer literal does not conform to the expected type Int。

    对Kotlin了解地越多,越会发现它的安全性,尽量用显示的代码来实现明确的需求,不明确或隐式的部分越少越好。

    Java代码只有第4行不能编译通过:

    1 int vint = 5;
    2 long vlong = vint;
    3 vlong = (long) vint;
    4 vint = vlong;
    5 vint = (int) vlong;

    Java中将类型从小到大进行隐式(或显示)转换属于正常赋值操作,从大到小只允许显示转换,但也可能会出现数据范围溢出问题。

    对于类型之间的显示转换,Kotlin提供了以下方法:

    toDouble(): Double    toFloat(): Float

    toLong(): Long           toInt(): Int

    toShort(): Short          toByte(): Byte

    toChar(): Char             toString(): String

    后面2个方法涉及到字符和字串,也就是说这8种数据类型可以相互转换。

    Kotlin中的变量都是作为对象处理,所以连内置数据类型都有方法和属性。

    以Int和Long为例,相互转换的代码:

    1 var vInt: Int = 97
    2 var vLong: Long = 98
    3 vInt = vLong.toInt()
    4 vLong = vInt.toLong()

    注意不同类型各自的数值范围不同,特别是Byte、Char及Short这种小范围的数据类型。因为如果将数值从大类型转换为小类型时,可能会出现范围溢出问题,但是并不会提示什么错误信息,而是以"循环"的方式计算结果值,这当然是不正确的结果。

    1 var vLong: Long = 128
    2 var vByte: Byte = vLong.toByte()

    Byte的长度和范围分别是8位和-128~127,当类型Long的128转为Byte时,超过最大值127的部分为1,所以继续向后移一个值作为结果,即-128。

    还有就是String类型,当内容不是纯数值时,转换为数值会报错。

    1 var vStr: String = "123asd"
    2 var vInt: Int = vStr.toInt()

    错误信息:Exception in thread "main" java.lang.NumberFormatException: For input string: "123asd"。

    2. 字符类型Char

    Kotlin中Char类型(16位)不是基础类型,主要体现在和整型的关系上,Java中字符型和整型是可以隐式赋值和比较的,但Kotlin不行。

    Java代码,vBool得到的值是true:

    1 boolean vBool = 'a' == 97;

    Kotlin代码,不能编译通过:

    1 var vBool: Boolean = 'c' == 97

    错误信息:Operator '==' cannot be applied to 'Char' and 'Int'。

    3. 布尔类型Boolean

    可取值true或false,内置有&&、||及!三种逻辑操作,还有一个toString()方法。

    4. 数组类型Arrays

    Kotlin数组的定义方式更加简洁,下面代码定义了Int和String两个类型的数组。

    1 val intArray: IntArray = intArrayOf(1, 2, 3)
    2 val strArray = Array(5, { i -> (i * i).toString() })

    通过索引方式([index])访问数组元素,如intArray[0]的值为1。

    5. 字串类型String

    Kotlin字串类型的定义和用法和Java类似,赋值的内容也是不能改变的。

    1 var vStr: String = "123asd"

    但是字符的获取除了get()方法,还可以直接用索引方式([index]),如vStr[3]的值为字符'a'。

    另外,还可以通过foreach的形式来遍历字串,而Java是不能通过foereah遍历String类型变量的。

    1 val vStr: String = "123asd"
    2 for (c in vStr) {
    3     println(c)
    4 }

    代码将字串中的字符挨个输出,结果为:

    1
    2
    3
    a
    s
    d
  • 相关阅读:
    数据分析实战(4)-Kaggle-谷歌数据分析
    东财主力资金异动数据探索分析
    数据分析实战(2)-Kaggle-共享单核数据分析
    爬虫框架Scrapy 之(二) --- scrapy文件介绍
    爬虫框架Scrapy 之(一) --- scrapy整体认识
    atomic
    坑爹的缩写
    一些坑爹的结构体
    sensor hub
    android p 常识
  • 原文地址:https://www.cnblogs.com/fafa12138/p/12397168.html
Copyright © 2020-2023  润新知