浏览器家园

TAG标签|网站导航| 手机访问:m.liulanqi.com

当前位置:首页开发学院Android → Kotlin入门第三课:数据类型

Kotlin入门第三课:数据类型

时间:2023-06-27 12:32:50来源:整理作者:浏览器知识手机版

前文链接:

Kotlin入门第一课:从对比Java开始

Kotlin入门第二课:集合操作

初次尝试用Kotlin实现Android项目

 

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

 

相关文章

  • 猎豹浏览器看视频没声音,猎豹浏览器视频无声怎么办?

    猎豹浏览器视频无声的原因在日常使用中,猎豹浏览器打开视频无声的情况经常发生。这主要是由于以下几个原因:音量被静音,或者声音设置过低;系统或应用程序出现错误,导致声音无法播放;浏览器版本不兼容或存在错误。2.解决方法一:检查音量设置首先,我们应该检查音量设置,确保没有被静音或声音过低。具体方法如下:找到电脑任务栏右下角的音量图标,点击选择“音量设置”;检查应用程序音量,确保有声音输出,并且音量大小适中;检查系统声音,确保没有被静音或调整过低。3.解决方法二:检查系统和应用程序设置如果音量设置正常,那么我..
  • 百度浏览器2013下载,百度浏览器2013免费安装下载,加速浏览足不出户!

    介绍百度浏览器2013百度浏览器2013是一款由百度公司开发的完全免费的网络浏览器,它已经成为了国内用户使用最为广泛的浏览器之一。作为一款内置有百度搜索引擎、智能加速、安全无忧等多种优秀功能的浏览器,百度浏览器2013为用户提供了更加便捷、快速、安全的上网体验。2.百度浏览器2013的主要功能百度浏览器2013的主要功能包括:采用了百度独有的搜索引擎技术,提供快速、准确的搜索结果;强大的拖拽功能,可用于文件上传、下载等操作;智能加速技术,让用户的上网速度更快;安全浏览模式,提供更加安全、无忧的上网体验..

Copyright 2019-2029 www.liulanqi.com 【浏览器家园】 版权所有

浏览器家园_下载浏览器就到浏览器家园 | 专注MAC浏览器和Windows浏览器下载和使用介绍

声明: 所有软件和文章收集整理来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告