广告位联系
返回顶部
分享到

Kotlin编程基础数据类型介绍

Android 来源:互联网 作者:佚名 发布时间:2022-08-20 20:56:53 人浏览
摘要

本文总览 上一篇学习了Kotlin基础语法知识,本篇开始会深入探讨一下Kotlin各个基础语法点。首先来熟悉Kotlin的数据类型和类型转换版块。 1.数值类型 在Kotlin中提供了数值类型: 整数类

本文总览

上一篇学习了Kotlin基础语法知识,本篇开始会深入探讨一下Kotlin各个基础语法点。首先来熟悉Kotlin的数据类型和类型转换版块。

1.数值类型

在Kotlin中提供了数值类型:

  • 整数类型:Byte,Short,Int,Long 四种
  • 浮点类型:Float,Double

下面表格列出了所有数值类型的位宽度:

类型 位宽度
Double 64
Float 32
Long 64
Int 32
Short 16
Byte 8

数值类型都?持转换:

toByte(): Byte

toShort(): Short

toInt(): Int

toLong(): Long

toFloat(): Float

toDouble(): Double

toChar(): Char

2.布尔型

  • 布尔用 Boolean 类型表示,有两个值:true 和 false

1

2

3

val myTrue: Boolean = true

val myFalse: Boolean = false

val boolNull: Boolean? = null

  • 内置布尔运算有:

1

2

3

|| – 短路逻辑或

&& – 短路逻辑与

 ! - 逻辑非

3.字符串

  • Kotlin 中字符串? String 类型表示;
  • 和 Java 一样,String 是不可变的;
  • 元素:字符可以使?索引运算符访问: s[i]

3.1 字符串字面值

Kotlin 有两种类型的字符串字?值:

  • 转义字符串可以包含转义字符

1

val s = "Hello, world!\n"

  • 原始字符串可以包含换?以及任意?本

1

2

3

4

5

val text = """

    for (c in "foo")

        print(c)

"""

// text可以原封不变打印出来,包括换行符格式

3.2 字符串模板

模板表达式以美元符( $ )开头,要么由?个的名称构成:

1

2

3

4

5

val i = 10

println("i = $i") // 输出“i = 10”

// 表达式使用 {} 括起来

val s = "abc"

println("$s.length is ${s.length}") // 输出“abc.length is 3”

4.数组

4.1 普通数组

在 Kotlin 中使? Array 类来表示, 使?函数 arrayOf() 来创建?个数组并传递元素值给它。

1

2

// 创建?个 Array 初始化为 ["0", "1", "4", "9", "16"]

val asc = Array(5) { i -> (i * i).toString() }

4.2 原?类型数组

?装箱开销的类组成原生类型数组:ByteArray 、 ShortArray 、 IntArray等,它们与 Array 并没有继承关系,但都有同样的方法属性集。

1

2

// ??为 5、值为 [0, 0, 0, 0, 0] 的整型数组

val arr = IntArray(5)

5.类型检测和类型转换

5.1 智能转换

在 Kotlin 中,?多数场景都不需要使?显式转换操作符,因为编译器会很智能地进行转换

1

2

if (x !is String) return

print(x.length)  // x ?动转换为字符串

智能转换?于 when 表达式:

1

2

3

4

5

when (x) {

    is Int -> print(x + 1)

    is String -> print(x.length + 1)

    is IntArray -> print(x.sum())

}

5.2 is 与 !is 操作符

使? is 操作符或其否定形式 !is 在运?时检测对象是否符合给定类型

1

2

3

4

5

6

if (obj is String) {

    // 代码处理

}

if (obj !is String) {

    // 代码处理

}

5.3 转换操作符: as 与 as?

as 是不安全 转换操作符,如果 一个表达式的转换是不成立的,会抛出异常

1

val x: String = y as String // 会存在 y 不能转换成 String的情况, 则会报错

值得注意: null 不能转换为 String 因该类型不是可空的。 如果 y 为空,上?的代码 会抛出?个异常。 为了让这样的代码?于可空值,请在类型转换的右侧使?可空类型:

1

val x: String? = y as String? // 这样是可以的

为避免异常,可以使?安全转换操作符 as? ,它可以在失败时返回 null :

1

val x: String? = y as? String // 这是一种 安全 转换操作符

总结

本篇主要熟悉Kotlin的基本数据类型和类型转换的知识点,掌握了这些基本点,为后面函数,接口,类的成员变量声明等奠定基础。

为方便理解知识点,可以类比 Java ,通过对比印象会更深,记得更牢固


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://juejin.cn/post/7130638995947683847
相关文章
  • Kotlin的Collection与Sequence操作异同点介绍

    Kotlin的Collection与Sequence操作异同点介绍
    在Android开发中,集合是我们必备的容器,Kotlin的标准库中提供了很多处理集合的方法,而且还提供了两种基于容器的工作方式:Collection 和
  • 实现一个Kotlin函数类型方法

    实现一个Kotlin函数类型方法
    接口与函数类型 业务开发中,经常会有实现一个函数式接口(即接口只有一个方法需要实现)的场景,大家应该都会不假思索的写出如下代
  • Android10 App启动Activity源码分析
    ActivityThread的main方法 让我们把目光聚焦到ActivityThread的main方法上。 ActivityThread的源码路径为/frameworks/base/core/java/android/app/ActivityThread。 1 2
  • Android10客户端事务管理ClientLifecycleManager源码解析

    Android10客户端事务管理ClientLifecycleManager源码解析
    在Android 10 App启动分析之Activity启动篇(二)一文中,简单地介绍了Activity的生命周期管理器是如何调度Activity进入onCreate生命周期的流程。这
  • Kotlin对象的懒加载方式by lazy与lateinit异同介绍

    Kotlin对象的懒加载方式by lazy与lateinit异同介绍
    属性或对象的延时加载是我们相当常用的,一般我们都是使用 lateinit 和 by lazy 来实现。 他们两者都是延时初始化,那么在使用时那么他们两
  • Android类加载流程分析

    Android类加载流程分析
    本文分析的代码基于Android8.1.0源码。 流程分析 从loadClass开始,我们来看下Android中类加载的流程 /libcore/ojluni/src/main/java/java/lang/ClassLoader.ja
  • Android实现读写USB串口数据的代码

    Android实现读写USB串口数据的代码
    最近在研究USB方面的内容;先后做了关于Android读写HID、串口设备的DEMO。本文比较简单,主要介绍的是Android实现读取串口数据的功能 废话不
  • Epoxy - 在RecyclerView中构建复杂界面
    Diffing 对于复杂数据结构支持的多个视图类型展示在屏幕上, Epoxy此时是尤其有用的. 在这些场景中, 数据可能会被网络请求, 异步 Observable, 用
  • Android性能优化的详细介绍

    Android性能优化的详细介绍
    性能优化是一个app很重要的一部分,一个性能优良的app从被下载到启动到使用都能给用户到来很好的体验。自然我们做性能优化也是从被下
  • Android进阶宝典-插件化2(Hook启动插件中四大组件

    Android进阶宝典-插件化2(Hook启动插件中四大组件
    在上一节,我们主要介绍了如果通过反射来加载插件中的类,调用类中的方法;既然插件是一个apk,其实最重要的是启动插件中的Activity、
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计