• Kotlin入门(3)基本变量类型的用法


    上一篇文章介绍了Kotlin在App开发中的简单用法,包括操纵控件对象、设置控件监听器,以及弹出Toast提示等等。也许大家已经迫不及待想要了解更深入的App开发,可是由于Kotlin是一门全新的语言,与Java相比有自己的一套语法和关键字,正所谓皮之不存、毛将焉附,因此接下来还是得系统地学习Kotlin的语法知识,为后续使用Kotlin开发App打下扎实的基础,有道是磨刀不误砍柴工。

    Kotlin的基本数据类型跟其他高级语言的分类一样,也包括了整型、长整型、浮点数、双精度、布尔型、字符型这几种常见类型,具体的类型名称说明如下:
    Int : 整型数,对应Java的int和Integer。
    Long : 长整型,对应Java的long和Long。
    Float : 浮点数,对应Java的float和Float。
    Double : 双精度,对应Java的double和Double。
    Boolean : 布尔型,对应Java的boolean和Boolean。
    Char : 字符型,对应Java的char。

    看起来很熟悉是不是,哇噻,Kotlin原来这么简单。可是如果你马上敲个变量声明的代码,便会发现编译有问题。比如声明一个最简单整型变量,按Java的写法是下面这样:

        int i=0;

    倘若按照Java的规则来书写Kotlin代码,就是下面这行代码:

        Int i=0;

    然而Android Studio立即提示编译不通过,刚开始学Kotlin便掉到坑里,看来要认真对待Kotlin,不能这么轻易让它坑蒙拐骗了。正确的Kotlin声明变量的代码是下面这样的:

        val i:Int = 0

    前面的val表示后面是个变量声明语句,接着是“变量名:变量类型”的格式声明,而不是常见的“变量类型 变量名”这种格式。至于后面的分号,则看该代码行后面是否还有其它语句,如果变量声明完毕直接回车换行,那么后面无需带分号;如果没有回车换行,而是添加其它语句,那么变量声明语句要带上分号。

    另外一个重要的区别是类型转换,在Java开发中,像int、long、float、double的变量,可以直接在变量名前面加上诸如(int)、(long)、(float)、(double)这种前缀进行强制类型转换;对于int和char这两种类型,甚至都无需转换类型,互相直接赋值即可。但在Kotlin中,不可以通过前缀来强制转换类型,只能通过调用类型转换函数输出其它类型的变量,下面是常见的几个类型转换函数:
    toInt : 转换为整型数。
    toLong : 转换为长整型。
    toFloat : 转换为浮点数。
    toDouble : 转换为双精度数。
    toChar : 转换为字符。
    toString : 转换为字符串。
    isNaN : 判断该变量是否为空值。

    接下来画个页面演示一下几种基本变量之间的类型转换,操作动图如下所示:

    下面是动图对应的类型转换代码片段:

        val origin:Float = 65.0f
        tv_origin.text = origin.toString()
        var int:Int
        btn_int.setOnClickListener { int=origin.toInt(); tv_convert.text=int.toString() }
        var long:Long
        btn_long.setOnClickListener { long=origin.toLong(); tv_convert.text=long.toString() }
        var float:Float
        btn_float.setOnClickListener { float=origin.toDouble().toFloat(); tv_convert.text=float.toString() }
        var double:Double
        btn_double.setOnClickListener { double=origin.toDouble(); tv_convert.text=double.toString() }
        var boolean:Boolean
        btn_boolean.setOnClickListener { boolean=origin.isNaN(); tv_convert.text=boolean.toString() }
        var char:Char
        btn_char.setOnClickListener { char=origin.toChar(); tv_convert.text=char.toString() }
    

      注意到上面第一行代码的声明变量以val开头,而其余的变量声明语句均以var开头,这是为什么呢?其实val和var的区别在于,前者修饰过的变量,只能在第一次声明时赋值,后续不能再赋值;而后者修饰过的变量,任何时候都允许赋值。方便记忆的话,可以把val看作是Java里的final关键字;至于var,Java里面没有对应的关键字,你就当它是例行公事好了。

    __________________________________________________________________________
    本文现已同步发布到微信公众号“老欧说安卓”,打开微信扫一扫下面的二维码,或者直接搜索公众号“老欧说安卓”添加关注,更快更方便地阅读技术干货。

  • 相关阅读:
    CPNtools协议建模安全分析--ML语言之颜色集定义(六)
    CPNtools协议建模安全分析---实例变迁标记(五)
    CPNtools协议建模安全分析---实例库所标记(四)
    CPNtools协议建模安全分析---实例(三)
    CPNtools协议建模安全分析---实例(二)
    工业协议安全分析中形式化粒度问题分析
    LTS1.3秘钥导出和身份验证计算过程
    CPNtools协议建模安全分析(一)
    TLS 1.3 中Pre_shared_key和key_share对应的两种密钥交换模式
    传统Dolev-Yao攻击模型和eCK强安全模型之间的辨析
  • 原文地址:https://www.cnblogs.com/aqi00/p/7097446.html
Copyright © 2020-2023  润新知