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里面没有对应的关键字,你就当它是例行公事好了。 点此查看Kotlin入门教程的完整目录

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java架构沉思录

是时候跟你的空指针说再见了

作为搬砖党的一族们,我们对判空一定再熟悉不过了,不要跟我说你很少进行判空,除非你喜欢NullPointerException。

10120
来自专栏小詹同学

使用 scikit-learn 玩转机器学习——模型评价

对于分类模型来说,我们一般会用模型的准确率来进行模型的评价,模型的准确率是用预测正确的样本数除以模型的总数。如果一个模型的准确率达到了95%,那么在我们的印象中...

15310
来自专栏大数据互联网思维

Kotlin的5种单例模式

最近在学习Kotlin这门语言,在项目开发中,运用到了单例模式。因为其表达方式与Java是不同的。所以对不同单例模式的实现进行了分别探讨。主要单例模式实现如下:

22900
来自专栏闰土大叔

行政妹子也要学前端?我劝你不要掉坑里

首先,跟各位说声抱歉,由于最近关注我的同学越来越多(不管是在校生、应届生、实习生,还是已经工作的同学),私信我的朋友也逐渐变得多了起来,一天下来,微信未读列表里...

29320
来自专栏玄魂工作室

Kali Linux Web渗透测试手册(第二版) - 5.1 - 使用浏览器绕过客户端控制

web应用程序和其他应用程序的主要区别在于web应用程序没有特定的软件或者说是用户界面,所以浏览器在用户的设备上扮演着客户端的重要角色。

18020
来自专栏Android相关

Kotlin---协程(Coroutine)介绍

线程属于进程,是CPU执行的最小单元。一个进程至少包含一个主线程,也可以拥有多个子线程。线程拥有独立的栈空间。而各个线程共享着进程的代码、内存 、文件FD等。

15020
来自专栏Flutter入门到实战

Swift 与 Kotlin 的简单对比,简直是太像了Hello World变量和常量显式类型强制类型转换字符串插值范围操作符区域操作符(for while等)数组map空集合函数返回值参数的变量数目

Swift 的语法与 Kotlin 有很多相似之处,整理了一些 Swift 和 Kotlin 的对比,下面是一些例子,大家不妨来看看。可以说掌握了kotlin ...

7210
来自专栏小詹同学

使用 scikit-learn 玩转机器学习——支持向量机

支持向量机(SVM)是监督学习中最有影响的方法之一。它的大致思想是找出距离两个类别(暂时以二分类问题为例)最近的点作为支持向量,然后找出一个最佳决策边界,以使从...

14630
来自专栏Android相关

Kotlin---代码块与Lambda

Kotlin在原本的语法糖(Syntactic sugar)中加入了很多有意思的语法,让编程看起来更加顺畅,更加简洁,方便阅读。

15730
来自专栏Java与Android技术栈

AAC 的 Lifecycle 结合 Kotlin Coroutines 进行使用一. Lifecycle二. 创建 LifecycleObserver 的实现类三. 列举使用场景四. 总结

目前,AAC(Android Architecture Components简称) 已经是 Android Jetpack 的一部分。Lifecycle 是 ...

32520

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励