【Kotlin基础系列】第2章 基本语法(2)
1.1 创建类与实例
类的属性可以在其声明或主体中列出。具有类声明中所列参数的默认构造函数会自动可用。类之间继承由冒号(:
)声明。默认情况下类都是 final 的;如需让一个类可继承, 请将其标记为 open
。
open class Shapeclass Rectangle(var height: Double, var length: Double): Shape() {var perimeter = (height + length) * 2
}fun main() {val rectangle = Rectangle(5.0, 2.0)println("The perimeter is ${rectangle.perimeter}")
}
1.2 集合
通过listOf创建集合对象,
fun main() {val items = listOf("apple", "banana", "kiwifruit")// 对集合进行迭代。for (item in items) {println(item)}// 使用 in 操作符来判断集合内是否包含某实例。when {"apple" in items -> println("apple")"banana" in items -> println("banana")"kiwifruit" in items -> println("kiwifruit")}// 使用 lambda 表达式来过滤(filter)与映射(map)集合items.filter { it.startsWith("a") }.sortedBy { it }.map { it.uppercase() }.forEach { println(it) }
}
1.3 空值与空检测
当可能用 null
值时,必须将引用显式标记为可空。可空类型名称以问号(?
)结尾。
// 如果 str 的内容不是数字返回 null
fun parseInt(str: String): Int? {return str.toIntOrNull()
}fun printProduct(arg1: String, arg2: String) {val x = parseInt(arg1)val y = parseInt(arg2)// x为null的情况if (x == null) {println("Wrong number format in arg1: '$arg1'")return}// y为null的情况if (y == null) {println("Wrong number format in arg2: '$arg2'")return}// 在空检测后,x 与 y 会自动转换为非空值println(x * y)
}fun main() {printProduct("1", "a")
}
1.4 类型检测与自动类型转换
is
操作符检测一个表达式是否某类型的一个实例。 如果一个不可变的局部变量或属性已经判断出为某类型,那么检测后的分支中可以直接当作该类型使用,无需显式转换:
fun getStringLength(obj: Any): Int? {if (obj is String) {// `obj` 在该条件分支内自动转换成 `String`return obj.length}if (obj !is String) {// `obj` 不是 `String`的情况,直接返回nullreturn null}// 在离开类型检测分支后,`obj` 仍然是 `Any` 类型return null
}
【Kotlin基础系列】第2章 基本语法(2)相关推荐
- 【Kotlin基础系列】第1章 简介
1.1 Kotlin简介 Kotlin 是一个用于现代多平台应用的静态编程语言,由 JetBrains 开发.是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐. 它简洁.安全.可与 Java 及 ...
- 【Kotlin基础系列】第2章 基本语法(1)
基础语法中主要说明以下几点: 1.1 包的声明应处于源文件顶部. 目录与包的结构无需匹配:源代码可以在文件系统的任意位置. 1.2 变量 val:只读局部变量,只能为其赋值一次:var:可重新赋值的变 ...
- 【Kotlin基础系列】第5章 控制流程
1 条件与循环 1.1 If 表达式 if else同Java,区别有两个: 1.使用if else代替Java的三目运算(a > b? a:b) 2.if 表达式的分支可以是代码块,这种情况最 ...
- 【Kotlin基础系列】第4章 类型
1 基本类型 在 Kotlin 中,所有东西都是对象,在这个意义上讲我们可以在任何变量上调用成员函数与属性. 一些类型可以有特殊的内部表示--例如,数字.字符以及布尔可以在运行时表示为原生类型值,但是 ...
- 【Kotlin基础系列】第7章 类与对象(2)--- 继承
1 继承 在 Kotlin 中所有类都有一个共同的超类 Any,对于没有超类型声明的类它是默认超类,Any 有三个方法:equals(). hashCode() 与 toString().因此,为所有 ...
- 【Kotlin基础系列】第6章 包与导入
源文件通常以包声明开头: package org.examplefun printMessage() { /*--*/ } class Message { /*--*/ }// -- 源文件所有内容( ...
- 【Kotlin基础系列】第7章 类与对象(1)--- 类
1 类 Kotlin 中使用关键字 class 声明类.类声明由类名.类头(指定其类型参数.主构造函数等)以及由花括号包围的类体构成.类头与类体都是可选的: 如果一个类没有类体,可以省略花括号. cl ...
- 【Kotlin基础系列】第3章 习惯用法
1.1 创建 DTO(POJO/POCO) val的属性只有getter,var的属性还有setter方法.当然也有equals(),hashCode(),toString(),copy()等方法 d ...
- jupyther_python基础系列 09 第九章 有益的探索
Table of Contents 1 第九章 有益的探索 1.1 数据类型的底层实现 1.1.1 奇怪的列表 1.1.2 神秘的字典 1.1.3 紧凑的字符串 1.1.4 是否可变 1. ...
最新文章
- AES加密补位填充的一个问题
- 全排列算法的全面解析
- 广州自由自在进口食品休闲消费的趋势
- 《Effective C#》Item 17:减少装箱(Boxing)和拆箱(Unboxing)操作
- 修改eclipse默认编码方式
- MyEclipse2015Stable2.0安装破解
- 实现(手撕)遗传算法与集成学习-人工智能大作业(特征选择其实是乱选的,抄的别人的,,,)
- JwPlayer播放器【去除Logo、去除版本信息】
- MikroTik RouterOS电子克隆盘原理收集
- hibernate历史版本下载
- Unity中世界坐标与相对于某个物体的相对坐标的转换
- Python代码打包在xp系统上运行~~
- android视频教程_创建数据库与完成数据添删改查,17_创建数据库与完成数据添删改查...
- face_recognition库的安装以及学习
- dtmf拨号原理matlab,matlab综合实验dtmf拨号器设计.doc
- Image Splicing Forgery Detection Combining Coarse to Refined Convolutional Neural Network and Adapti
- 无主之地3重型武器节奏评分榜(9.25) 枪械名 红字效果 元素属性 清图评分 Boss战评分 泛用性评分 特殊性评分 最终评级 掉落点 掉率 图片 瘟疫传播
- TokenGazer评级丨TRON:BTT众筹谋求熊市破局,生态繁荣但数据受到质疑
- echarts饼图设置每个扇形的颜色
- micropython移植教程_移植MicroPython到NUCLEO_L476RG开发板
热门文章
- 不规则图形数格子的方法_常见的估算不规则图形的面积.ppt
- Error cleaning up after pivot: remove /.pivot_root162611078: device or resource busy
- CRC校验笔记 C语言代码分析
- iOS Platform文件百度云盘下载地址
- 教你一招!如何用 Python 实现 QQ 消息自动回复?
- android 自定义心电图,手把手教你打造一个心电图效果View Android自定义View(示例代码)...
- 在html中写响应式布局的代码,手机端自适应响应式框架,移动端响应式布局代码...
- hjr-四旋翼飞行器串级PID飞控算法
- 如下篇文章写的不错!
- c语言中关于不包含头文件string.h仍然可以使用strlen函数以及strlen函数计算数组时结果问题