Kotlin 学习总结

2019-08-05  本文已影响0人  SoaringHeart

Kotlin 学习笔记

Kotlin 是一门完全面向对象(Object Oriented)的语言。在Kotlin中一切皆是对象。所有对象皆继承自Any(类似其他语言中的所有对象的祖先类Object)。

###注释 
// 行注释
/* 多行的
   块注释。 */

基本数值类型

Kotlin的基本数值类型包括Byte、Short、Int、Long、Float、Double等,这些类型都是内置类型。

在 Kotlin 中,函数是对象,基本类型也是对象,所有东西都是对象:数字、字符、布尔和数组。同时,Kotlin提供多个内建对象(buildin object):Number,Char,Boolean,String,Array等。(JavaScript 中的所有事物都是对象:字符串、数值、数组、函数等等。此外,JavaScript 提供多个内建对象,比如 String、Date、Array 等等。)

### 常量、变量
使用val 定义一次赋值(只读)的局部变量;使用var定义可变变量

val a: Int = 1  // 立即赋值
val b = 2   // 自动推断出 `Int` 类型
val c: Int  // 如果没有初始值类型不能省略

### 使用is 运算符进行类型检测
is 运算符检测一个表达式是否某类型的一个实例。

### 字符串
字符串可以包含模板表达式。模板表达式以美元符号($)开始或者是 ${任意表达式}。
val fooTemplateString = "$fooString has ${fooString.length} characters"

val str = "kotlin very good"
str.first()   <=>   str[0]   <=>   str.get(0)
val a = "Hello"
val b = "World"
val c = "$a $b" 或者 val c = a + b (function a.plus(b))
输出将是: Hello World

val sb = StringBuilder()
sb.append(a).append(b)
val c = sb.toString()

集合

不可变集合:List<E>、Set<E>、Map<K,V>
可变类型集合: MutableList<E>、MutableSet<E>、MutableMap<K,V>
Set 类型集合的使用和List类型集合大致相同,Set集合会把重复的元素去除掉。

List类型
声明并初始化List的集合:使用listOf(..)函数
声明并初始化MutableList的集合:使用mutableListOf(..)函数
val mutableList = mutableListOf<String>("1","2","3","4","5")  // 确定元素的值类型
mutableList.add("6")  // 添加元素
mutableList.remove(1)   // 删除某一元素
mutableList.clear()   // 清空集合
其他方法 first, last, contains, indexOf, elementAt,reversed, sortedBy(),

Map<K,V>类型
不可变的Map类型集合的初始化使用:mapOf()函数
可变的Map类型集合的初始化使用:mutableMapOf()函数
val map2 = mapOf<Int,String>(1 to "value1" , 2 to "value2")

控制流

1. 常规if(无三元运算符)
2. for 循环可以对任何提供迭代器(iterator)的对象进行遍历
for (item in collection) print(item)
带索引 withIndex
for ((index, value) in array.withIndex()) {
    println("the element at $index is $value")
}

// it并不是Kotlin中的一个关键字(保留字)。it是在当一个高阶函数中Lambda表达式的参数只有一个的时候可以使用it来使用此参数。it可表示为单个参数的隐式名称,是Kotlin语言约定的。)
iterator.forEach {
    println("The element is $it")
}
map2.forEach{ key,value -> 
    println("$key \t $value")
}
//forEachIndexed遍历集合并且可以拿到下标index
stringList.forEachIndexed { index, string -> 
    println("forEachIndexed:$index $string") 
}

4. when 取代了类 C 语言的 switch 操作符。其最简单的形式如下:
when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    else -> { // 注意这个块
        print("x is neither 1 nor 2")
    }
}

5. 常规While 循环

6. 在循环中支持传统的return、break 与 continue 操作符。

函数

[访问控制符] fun 方法名(参数列表) [:返回值类型] {}

Unit 返回类型可以省略:
fun printSum(a: Int, b: Int): Unit {}
(高阶函数例)传入两个参数,并传入一个函数来实现他们不同的逻辑
fun resultByOpt(num1 : Int , num2 : Int , result : (Int ,Int) -> Int) : Int{
    return result(num1,num2)
}
变长参数函数(关键字vararg)
fun hasEmpty(vararg strArray: String?): Boolean{
    for (str in strArray){
        if ("".equals(str) || str == null)
            return true 
    }
    return false
}

getter 和 setter 都是可选
上一篇下一篇

猜你喜欢

热点阅读