Kotlin之一 Kotlin基础
Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。
简洁: 减少样板代码的数量。
安全: 避免空指针异常等整个类的错误。
互操作性: 充分利用 JVM、Android 和浏览器的现有库。
工具友好: 可用任何 Java IDE 或者使用命令行构建。
Kotlin程序文件 xxx.kt格式
kotlin源文件不需要相匹配的目录和包,源文件可以放在任何文件目录。
如果没有指定包,默认为 default 包名。
默认导入包
和java一样,kotlin文件也会有默认导入的包
默认导入的包:
kotlin.*
kotlin.annotation.*
kotlin.collections.*
kotlin.comparisons.*
kotlin.io.*
kotlin.ranges.*
kotlin.sequences.*
kotlin.text.*
可见修饰符
修饰符 | 类成员 | 顶级声明 |
---|---|---|
public(default) | 任何地方可见 | 任何地方可见 |
internal | 在module中可见 | 在module中可见 |
protected | 在子类中可见 | – |
private | 在类内部可见 | 在当前文件中可见 |
在Kotlin有一个模块的概念,定义为internal的对象,同一模块是可以相互访问的
基本数据类型
Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于Java的是,字符不属于数值类型,是一个独立的数据类型。
类型 | 位宽度 |
---|---|
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
位操作符
shl(bits) – 左移位 (Java’s <<)
shr(bits) – 右移位 (Java’s >>)
ushr(bits) – 无符号右移位 (Java’s >>>)
and(bits) – 与
or(bits) – 或
xor(bits) – 异或
inv() – 反向
在kotlin中如果可以根据上下文环境推断出正确的数据类型而且数学操作符会做相应的重载时,可以自动进行类型转换
字符串
- 和 Java 一样,String 是不可变的。字符串支持循环遍历
- Kotlin 中三个引号 """ 的字符串支持多行,会保留字符串的换行符
- String 可以通过 trimMargin() 方法来删除多余的空白
- ''时要用 '}代替
字符串模板
$ 表示一个变量名或者变量值
$varName 表示变量值
${varName.fun()} 表示变量的方法返回值:
~
var a = 1
// 字符昨晚上会在声明时直接将$a代入变量a的值
val s1 = "a is $a"
a = 2
// 模板中的任意表达式:
val s2 = "${s1.replace("is", "was")}, but now is $a"
Kotlin 中的 Char 不能直接和数字操作,Char 必需是单引号 ' 包含起来的
定义常量与变量
可变变量定义:var 关键字
格式 :
var 变量名 : 变量类型 = 初始化值
不可变变量定义:val 关键字,只能赋值一次的变量(类似Java中final修饰的变量)
格式 :
val 变量名 : 变量类型 = 初始化值
在定义常量或者变量的时候,如果变量的类型可以通过值直接确定时,可以省略变量类型的声明即:
var 变量名 = 变量值;
注意:变量值一定要能明确变量是什么类型
数组
数组的创建两种方式:一种是使用函数arrayOf();另外一种是使用工厂函数
格式一:
arrayOf(值1, 值2, 值3)
格式二:
Array(值1, 值2, 值3);
期中Array还可以使用ByteArray, ShortArray, IntArray,用来表示各个类型的数组
NULL检查机制
Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两种处理方式,字段后加!!像Java一样抛出空异常,另一种字段后加?可不做处理返回值为 null或配合?:做空判断处理
//类型后面加?表示可为空
var age: String? = "23"
//抛出空指针异常
val ages = age!!.toInt()
//不做处理返回 null
val ages1 = age?.toInt()
//age为空返回-1
val ages2 = age?.toInt() ?: -1
函数定义
在kotlin中方法的定义使用fun(function功能的缩写)
写法和java类似
访问修饰符 fun 方法名(var 变量名 : 变量类型 ...) : 返回值类型
如果方法没有返回值时 返回值类型可以不写,或者使用Unit
和java一样方法支持可变参数,kotlin中方法传入可变参数时使用vararg
访问修饰符 fun 方法名(vararg 变量名 : 变量类型 ...) : 返回值类型