Kotlin学习笔记一
本文于1164天之前发表,文中内容可能已经过时。
Kotlin简介
Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模板。它与Java高度可互操作,可以同时用在一个项目中。
下载地址
1.Kotlin的基本类型
基本数据类型位数
Type | Bit width |
---|---|
Double | 64 |
Float | 32 |
Long | 64 |
Int | 32 |
Short | 16 |
Byte | 8 |
与Java基本数据类型对比
Java Type | Kotlin Type |
---|---|
byte | kotlin.Byte |
short | kotlin.Short |
int | kotlin.Int |
long | kotlin.Long |
char | kotlin.Char |
float | kotlin.Float |
double | kotlin.Double |
boolean | kotlin.Boolean |
复杂类型的对比:
Java Type | Kotlin Type |
---|---|
java.lang.Object | kotlin.Any! |
java.lang.Cloneable | kotlin.Cloneable! |
java.lang.Comparable | kotlin.Comparable! |
java.lang.Enum | kotlin.Enum! |
java.lang.Annotation | kotlin.Annotation! |
java.lang.Deprecated | kotlin.Deprecated! |
java.lang.Void | kotlin.Nothing! |
java.lang.CharSequence | kotlin.CharSequence! |
java.lang.String | kotlin.String! |
java.lang.Number | kotlin.Number! |
java.lang.Throwable | kotlin.Throwable! |
集合类型的对比:
Java Type | Kotlin Type | Kotlin mutable type | Loaded platform type |
---|---|---|---|
Iterator |
Iterator |
MutableIterator |
(Mutable)Iterator |
Iterable |
Iterable |
MutableIterable |
(Mutable)Iterable |
Collection |
Collection |
MutableCollection |
(Mutable)Collection |
Set |
Set |
MutableSet |
(Mutable)Set |
List |
List |
MutableList |
(Mutable)List |
ListIterator |
ListIterator |
MutableListIterator |
(Mutable)ListIterator |
Map<K, V> | Map<K, V> | MutableMap<K, V> | (Mutable)Map<K, V>! |
Map.Entry<K, V> | Map.Entry<K, V> | MutableMap.MutableEntry<K, V> | (Mutable)Map.(Mutable)Entry<K, V>! |
数组类型的映射:
Java Type | Kotlin Type |
---|---|
int[] | kotlin.IntArray! |
String[] | kotlin.Array<(out) String>! |
2.函数的使用
定义函数使用fun关键字
fun sub(a: Int, b: Int): Int {
return a - b
}
上面定义一个名为sub的函数,该函数有两个Int类型参数,有一个Int型的返回值,在Kotlin中,一句代码结束可以不用加分号(;)结束,加分号也没问题。在Kotlin中可以对函数进行简写如下:
fun sub(a: Int, b: Int) = a - b;
上面fun未显示的给出返回值则Kotlin会自动推测出返回值类型。
fun prin(a: Int, b: Int): Unit {//没有返回值可以显示的用Unit表示返回
println(a - b)
}
fun prin(a: Int, b: Int) {//也可以不写出返回值
println(a - b)
}
3. 定义常亮和变量
在Kotlin中使用val声明一个常量(只读属性),而使用var声明一个变量。
fun mytest() {
//使用val关键字声明的常量,和Java中static final一致,声明时需要赋值
val a: Int = 1 //定义时指明常量类型
val b = 2 //自动推测类型
val c: Int //声明一个未赋值的常量时,必须指明类型
// a = 3 //常量值不可修改
//使用var关键字声明一个变量,变量的值可以修改 var year: Int = 2016 //显式指定变量的类型 var month = 5 //自动推断变量类型 var day: Int //声明一个不初始化的变量,必须显式指定类型 month = 6 //变量值可以被修改
}
4. 注释
fun comments() {
// 注释一行代码
// var s = "hello world"
/*注释一段代码
var a = 8
a++
a--*/
}
5. 条件表达式
//正常写法
fun max(a: Int, b: Int): Int {
if (a > b)
return a
else
return b
}
//在kotlin中可以简写为:
fun max1(a: Int, b: Int) = if (a > b) a else b
6. 可空类型
在声明变量时在变量类型后加一个问好?表示该变量是可空变量,其值可以为空,在调用时需注意非空判断
var name: String? = "mytest"
name = null
var sex: String = "male"
//sex = null //这句会报错,因为sex是不可空类型
返回值也可以为可空类型
fun mytest(s: String): Int? {
if (s == null) {
return null
}
return Integer.parseInt(s)
}
7. 类型检查和自动类型转换
在Kotlin中使用is进行类型检查,在检查后不需要显示转换,可直接按检查的类型使用
fun getStringLength(n: Any): Int?{
if (n is String) {
return n.length
}
return null
}
8. 循环
//for循环
fun myfor() {
var arr = listOf(1,2,3,4)
for (i in arr.indices) {//索引方式
println(arr[i])
}
for (num in arr) {//直接使用list中对象
println(num)
}
}
fun mywhile() {
var i = 0
while (i < 10) {
println ("$i")
i++
}
i = 0
do {
println(i)
} while (i < 10)
}
9. when表达式
when类似Java中的switch,是一个多分支选择的表达式
fun main(args: Array<String>) {
testCase("hello world")
}
fun testCase(obj: Any) {
when(obj) {
is String -> {
print("this is string")
}
is Int -> {
print("this is integer")
}
else -> {
print("unkown value")
}
}
}
10. ranges的使用
(1) 使用in操作符检查一个数是否在某个范围内,!in表示是否不在某个范围内
/*
判断分数是否大于等于90,小于等于100
*/
fun isGood(score: Int) {
if(score in 90..100) //ranges是闭区间
println("very good")
else
println("not so good")
}
(2) 检查索引是否越界
/*
检查index是否在数组arr的索引范围内
*/
fun checkIndex(index: Int, arr: Array<Int>) {
if(index in 0..arr.lastIndex) //arr.lastIndex返回的是数组的最后一位的下标
println("index in bounds")
else
println("index out of bounds")
}
(3) 遍历一个范围
for (i in 1..5) {
println(i)
}
//也可以使用in遍历一个集合
fun test(arr: Array<String>) {
for (str in arr) {
println(str)
}
}
这些都是Kotlin的一些基本语法知识,对于入门Kotlin来说需要学的还有很多,Kotlin在简化代码方面做 了很多努力,现在Google官方也宣布Android官方支持的语言是Kotlin,所以未来Kotlin肯定会有很好的发展。