21. Kotlin学习笔记 (一) 基本语法

Eclipse下安装:  eclipse安装kotlin

如果用Help->Eclipse marketplace安装不成功的话,可以用Help->Install new software

Android studio只要安装3.0版本就可以: Android studio下载

kotlin github源代码


kotlin官网和在线执行代码


个人觉得学习kotlin语法的话,用eclipse可能比较方便点,直接写直接运行。


1. package

1
2
package my.demo
import java.util.*


2. 函数定义

fun函数有两个Int参数和一个Int返回值

1
2
3
fun sum(a: Int, b: Int): Int{
    return a + b
}

函数表达式和返回值

1
fun sum(a:Int, b: Int) = a + b

Unit 函数无返回值

1
2
3
fun sum(a: Int, b: Int):Unit {
    println("a: ${a} , b: ${b}")
}

无返回值函数

1
2
3
fun sum1(a: Int, b: Int){
    println("aa: ${a}, bb: ${b}")
}


3. 局部变量

不可变局部变量(val)

1
2
val a: Int = 1  // immediate assignment
val b = 2   // `Int` type is inferred

可变局部变量

1
2
var x = 5
x += 1


4. 注释

// 和 /**/


5. String 模板

1
2
3
4
5
var a = 1
val s1 = "a is ${a}"
 
a = 2
val s2 = "${s1.replace("is", "was")}, but now is ${a}"


6. 条件表达式

1
2
3
4
5
6
7
fun maxOf(a: Int, b: Int): Int{
    if(a > b) {
        return a
    }else {
        return b
    }
}


使用if表达式

1
fun maxOf(a:Int, b: Int) = if(a > b) a else b


7. 使用可为null的值和null检查

一个引用必须被明确标记为可能为null

1
2
3
4
fun maxOf(a:Int, b: Int): Int? {
    println("a: ${a}")
    return null
}


8. 类型检查和动态转换

1
2
3
4
5
6
7
fun getStringLength(obj: Any): Int? {
    if (obj is String) {
        return obj.length
    }
     
    return null
}


9. 循环

1
2
3
4
5
6
7
8
9
10
11
12
13
val items = listOf("a""b""c""e")
     
for(zz in items) {
    println(zz)
}  
 
//或者
val items = listOf("a""b""c""e""f")
     
    for(idx in items.indices) {
        println(items.get(idx))
        println("value: ${items[idx]}")
    }


10. while 循环

1
2
3
4
5
6
7
8
val items = listOf("a""b""c""e""f")
     
var ind = 0
     
while(ind < items.size) {
    println("value: ${items[ind]}")
    ind ++;
}


11. when 表达式

1
2
3
4
5
6
fun descrbe(obj: Any): String =
when (obj) {
    1 -> "one"
    "Hello" -> "greeting"
    else -> "else default"
}


12. 范围

检查一个数字是否在一个范围时可以使用in

1
2
3
4
5
6
7
8
val x = 10
val y = 8
     
if(x in 1.. y+1) {
    println("x in...")
}else {
    println("not in")
}

检查一个数字不在一个范围

1
2
3
4
5
if (x !in 1..y+1) {
    println("b not in ")
}else {
    println("b x in")
}

迭代一个范围

1
2
3
for(x in 1..5) {
    println(x)
}

级数遍历一个范围

1
2
3
for(x in 1..5 step 2) {
    println(x)
}


13. 使用集合

遍历

1
2
3
4
var lists = listOf("a""b""c")
    for(ele in lists){
    println(ele)
}


使用in检查某个元素是否在某个集合

1
2
3
4
when {
    "a" in lists -> println("a in list")
    "b" in lists -> println("b in list")
}


使用lambda语法过滤集合

1
2
3
4
5
6
var lists = listOf("acake""apple""orange")
     
    lists.filter { x->x.startsWith("a") }
    .sortedBy { it }
    .map { x->x.toUpperCase() }
    .forEach{println(it)}




     本文转自rongwei84n 51CTO博客,原文链接:http://blog.51cto.com/483181/1931412,如需转载请自行联系原作者



上一篇:Oracle Study之案例--RMAN备份配置参数


下一篇:[Android学习笔记七] 设备管理服务示例开发