上一篇文章介绍了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入门(3)基本变量类型的用法的更多相关文章

  1. Kotlin入门(9)函数的基本用法

    上一篇文章介绍了Kotlin新增的空安全机制,控制语句部分可算是讲完了,接下来将连续描述Kotlin如何定义和调用函数,本篇文章先介绍函数的基本用法. 前面几篇文章介绍控制语句之时,在setOnCli ...

  2. Kotlin入门教程——目录索引

    Kotlin是谷歌官方认可的Android开发语言,Android Studio从3.0版本开始就内置了Kotlin,所以未来在App开发中Kotlin取代Java是大势所趋,就像当初Android ...

  3. Kotlin入门(5)字符串及其格式化

    上一篇文章介绍了数组的声明和操作,包括字符串数组的用法.注意到Kotlin的字符串类也叫String,那么String在Java和Kotlin中的用法有哪些差异呢?这便是本文所要阐述的内容了. 首先要 ...

  4. Kotlin入门(13)类成员的众生相

    上一篇文章介绍了类的简单定义及其构造方式,当时为了方便观察演示结果,在示例代码的构造函数中直接调用toast提示方法,但实际开发是不能这么干的.合理的做法是外部访问类的成员属性或者成员方法,从而获得处 ...

  5. 写给Android开发者的Kotlin入门

    写给Android开发者的Kotlin入门 转 https://www.jianshu.com/p/bb53cba6c8f4 Google在今年的IO大会上宣布,将Android开发的官方语言更换为K ...

  6. Kotlin入门(4)声明与操作数组

    上一篇文章介绍了基本变量类型在Kotlin中的用法,不过这只针对单个变量,如果要求把一组相同类型的变量排列起来,形成一个变量数组,那又该如何声明和操作呢? 在Java中声明数组,跟在C语言中声明是一样 ...

  7. Kotlin入门(11)江湖绝技之特殊函数

    上一篇文章介绍了Kotlin对函数的输入参数所做的增强之处,其实函数这块Kotlin还有好些重大改进,集中体现在几类特殊函数,比如泛型函数.内联函数.扩展函数.尾递归函数.高阶函数等等,因此本篇文章就 ...

  8. Kotlin入门(14)继承的那些事儿

    上一篇文章介绍了类对成员的声明方式与使用过程,从而初步了解了类的成员及其运用.不过早在<Kotlin入门(12)类的概貌与构造>中,提到MainActivity继承自AppCompatAc ...

  9. Swift入门篇-基本类型(2)

    现在我也在学习Swift语言,常常去逛很多苹果社区和论坛,看到了圈子很多奇怪的现象,发现很多人都赶忙去翻译 Swift书籍 和 发布Swift的视频 .他们这种对新知识的探索精神我本人是很佩服的.但是 ...

随机推荐

  1. javaScript 二分查找

    什么是二分查找的,举个栗子: var arr = [1, 3, 5, 7, 9, 11, 14, 15, 17, 19, 20]; 上面有序数组, 随便给你一位 9 ,输出该数在数组中的索引.   当 ...

  2. 机器学习基石笔记:07 The VC Dimension

    当N大于等于2,k大于等于3时, 易得:mH(N)被Nk-1给bound住. VC维:最小断点值-1/H能shatter的最大k值. 这里的k指的是存在k个输入能被H给shatter,不是任意k个输入 ...

  3. 脚手架vue-cli系列五:基于Nightwatch的端到端测试环境

    不同公司和组织之间的测试效率迥异.在这个富交互和响应式处理随处可见的时代,很多组织都使用敏捷的方式来开发应用,因此测试自动化也成为软件项目的必备部分.测试自动化意味着使用软件工具来反复运行项目中的测试 ...

  4. Datatable数据转换成excel导出时 数值类型在EXCEL中为文本形式 无法进行统计

    功能背景 有地税上以及各企业的一个缴费情况的比对,基于两表进行匹配查看数据是否在合理范围内,对比对完成表进行数值导出. 2.问题描述 匹配和生成匹配结果导出已成功完成,但是在数值列导出后变成了文本形式 ...

  5. redis内部分享ppt

    作者:青客宝团队 Redis:最好的缓存数据库 说Redis是缓存服务,估计有些人会不开心,因为Redis也可以把数据库持久化,但是在大多数情况Redis的竞争力是提供缓存服务.说到缓存服务必然会想到 ...

  6. Intellij新安装初始化配置

    自动编译开关 忽略大小写开关 IDEA默认是匹配大小写,此开关如果未关.你输入字符一定要符合大小写.比如你敲string是不会出现代码提示或智能补充.但是,如果你开了这个开关,你无论输入String或 ...

  7. Unity 多人网络连接

    NetWorkServer.cs using UnityEngine; using System.Collections; public class NetWorkServer : MonoBehav ...

  8. Android_性能优化转载

    胡凯 RSS Blog Archives Android Training in Chinese About Android性能优化典范 JAN 17TH, 2015 | COMMENTS 2015年 ...

  9. HDFS-Architecture剖析

    1.概述 从HDFS的应用层面来看,我们可以非常容易的使用其API来操作HDFS,实现目录的创建.删除,文件的上传下载.删除.追加(Hadoop2.x版本以后开始支持)等功能.然而仅仅局限与代码层面是 ...

  10. 移动端head头部常用meta标签

    <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum- ...