没有合适的资源?快使用搜索试试~ 我知道了~
Das Nationale Gedenkportal
需积分: 10 417 浏览量
2025-08-07
16:28:16
上传
评论
收藏 701KB PDF 举报
温馨提示
百度 9月2日,夏军等2人擅自提前离开培训班,赴张掖、嘉峪关、敦煌、西安等地旅游,共4天(9月5日下午返回大连)。
《Kotlin项目实战开发》 第3章 类型系统与可空类型 跟Java、C和C ++ 一样, Kotlin也是“静态类型编程语言”。 通常,编程语言中的类型系统中定义了 ? 如何将数值和表达式归为不同的类型 ? 如何操作这些类型 ? 这些类型之间如何互相作用 我们在编程语言中使用类型的目的是为了让编译器能够确定类型所关联的对象需要分配多少空间。 在每一个编程语言中,都有一个特定的类型系统。静态类型在编译时期时,就能可靠地发现类型错误。因此通常能增进最终程序的可靠性。 类型系统在各种语言之间有非常大的不同,主要的差异存在于编译时期的语法,以及运行时期的操作实现方式。 本章我们简单介绍一下Kotlin的类型系统。
资源推荐
资源详情
资源评论





























《Kotlin 项目实战开发》
·1·
第 3 章 类型系统与可空类型
跟 Java、C 和 C ++ 一样, Kotlin 也是“静态类型编程语言”。
通常,编程语言中的类型系统中定义了
l 如何将数值和表达式归为不同的类型
l 如何操作这些类型
l 这些类型之间如何互相作用
我们在编程语言中使用类型的目的是为了让编译器能够确定类型所关联的对象需要分配
多少空间。
在每一个编程语言中,都有一个特定的类型系统。静态类型在编译时期时,就能可靠地发
现类型错误。因此通常能增进最终程序的可靠性。
类型系统在各种语言之间有非常大的不同,主要的差异存在于编译时期的语法,以及运行
时期的操作实现方式。
本章我们简单介绍一下 Kotlin 的类型系统。
3.1 类型系统
我们知道在计算机中中,信息都是以 01 比特存储的,硬件无法区分存储器地址、脚本、
字符、整数、以及浮点数。为了赋予 01 比特意义,于是有了类型。
3.1.1 类型系统的作用
使用类型系统,编译器可以检查无意义的、无效的、类型不匹配等错误代码。这也正是强
类型语言能够提供更多的代码安全性保障的原因之一。
另外,静态类型检查还可以提供有用的信息给编译器。跟动态类型语言相比,由于有了类
型的显式声明,静态类型的语言更加易读好懂。
有了类型我们还可以更好地做抽象化、模块化的工作。这使得我们可以在较高抽象层次思
考并解决问题。例如,Java 中的字符数组 char[] s = {'a', 'b', 'c'} 和字符串类型 String str =
"abc" 就是最简单最典型的抽象封装实例。
字符数组
jshell> char[] s = {'a','b','c'} // 声明并初始化一个字符数组
s ==> char[3] { 'a', 'b', 'c' }
jshell> s[0] $3 ==> 'a'
jshell> s[1] $4 ==> 'b'
jshell> s[2] $5 ==> 'c'

·2·
字符串
jshell> String str = "abc" // 直接声明一个字符串类型的变量
str ==> "abc"
jshell> str.toCharArray() // 字符串可以通过这个方法转为字符数组
$7 ==> char[3] { 'a', 'b', 'c' }
3.1.2 Java 的类型系统
Java 的类型系统可以简单用下面的图来表示:
图 3-1 Java 的类型系统
关于 Java 中的 null,有很多比较坑的地方。例如
int i = null; //类型不匹配,不能把 null 转换成 int
short s = null; //类型不匹配,不能把 null 转换成 short
byte b = null: //类型不匹配,不能把 null 转换成 byte
double d = null; //类型不匹配,不能把 null 转换成 double
Integer io = null; // 这个可以编译通过
int j = io; //这个也可以编译通过, 但是在运行的时候会抛 NullPointerException ,这 是 Java 的 null
比较坑的地方,在 Kotlin 中不会发生这样的情况,下文我们将会看到关于 Kotlin 的可空类型的介绍
基本数据类型与引用数据型在创建时,内存存储方式区别如下:
l 基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上(性能
高)。
l 引用数据型在被创建时,首先在栈上给其引用(句柄)分配一块内存,而对象的具体
信息存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。

·3·
3.1.3 Kotlin 的类型系统
Java 是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类
型,为了能够将这些基本数据类型当成对象操作,Java 为每一个基本数据类型都引入了对应
的包装类型(wrapper class),例如 int 的包装类就是 Integer。从 Java 5 开始引入了自动装
箱/拆箱机制,使得二者可以相互转换。Java 为每个原始类型提供了包装类型:
l 原始类型: boolean,char,byte,short,int,long,float,double
l 包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double
Kotlin 中去掉了原始类型,只有“包装类型”, 编译器在编译代码的时候,会自动优化性
能,把对应的包装类型拆箱为原始类型。
Kotlin 系统类型分为可空类型和不可空类型。Kotlin 中引入了可空类型,把有可能为 null
的值单独用可空类型来表示。这样就在可空引用与不可空引用之间划分出来一条明确的显式的
“界线”。
Kotlin 类型层次结构如图 3-2 所示:
剩余17页未读,继续阅读
资源评论


AI天才研究院

- 粉丝: 6w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 网络课程设计报告.doc
- 通信工程项目管理试题A卷答案.doc
- 拉斯维加斯酒店系统集成方案样本.doc
- 网络系统集成开发方案设计莫光星要点.doc
- 网络人才需求形势与职业生涯规划.ppt
- 机械制造业电子商务平台规划.doc
- 基因工程的基本操作程序公开课专家讲座.pptx
- 最新最新毕业论文_基于单片机的数字温度计.docx
- 个人网络教研总结.docx
- 网络带来的碎片作文900字.docx
- 网络广告协议书范本.doc
- 基于ASP的旅游网站设计.doc
- 物联网技术及应用习题一.doc
- 专升本《计算机图形学与CAD技术》-试卷-答案.doc
- 基于SPARK的ETHINK数据挖掘与分析介绍.pdf
- 网络设备配置说课稿.ppt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
