Kotlin学习笔记之基础语法

1、定义包名
约定俗成,包的定义放置的代码源文件的顶部

package com.demo.hellokotlin
import java.util.*
   // ...

这个和Java中定义没什么区别

2、定义方法
Java入门时第一个方法就是main方法,而Kotlin main就要简单多了,方法使用关键字fun声明,如下:

fun main(args: Array<String>){
    print("Hello world!")
}

定义一个sum返回两个整数之和,可以看到参数定义和Java相反,方法返回类型也同样如此。
方式:参数名字+“:”+“数据类型”,如:a: Int、a:String;fun sum(…): Int

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

定义一个没有返回值的方法,当然Unit可以省略不加。

fun printSum(a:Int,b:Int) : Unit{
    println("sum of $a and $b is ${a + b}")
}

3、定义局部变量
分配一次(只读)局部变量:

val a: Int = 1  // 设置初始值
val b = 2   // 自动推断为“Int”类型
val c: Int  // 不设置初始值
c = 3       // 赋值

a = 1, b = 2, c = 3
可变的变量:

var x = 5 // 自动推断为“Int”类型
x += 1

4、注释
Kotlin注释和java和javascript一样支持用”//”注释行和使用“/* */”进行代码块注释。不同的是Kotlin注释支持嵌套。

// This is an end-of-line comment
/* This is a block comment
   on multiple lines. */

5、字符串模板

var a = 1
// simple name in template:
val s1 = "a is $a" 

a = 2
// arbitrary expression in template:
val s2 = "${s1.replace("is", "was")}, but now is $a"

6、使用条件表达式
常规写法

fun maxOf(a: Int, b: Int): Int {
    if (a > b) {
        return a
    } else {
        return b
    }
}

Kotlin简写

扫描二维码关注公众号,回复: 879505 查看本文章
fun maxOf(a: Int, b: Int) = if (a > b) a else b

7、空值检测
Kotlin 是空指针安全的,所以使用Kotlin就再也不用为空指针异常而烦恼了。
比如下面代码,当item不为空时打印出值,反过来当item为空时执行打印123456。

val listWithNulls: List<String?> = listOf("A", null)
for (item in listWithNulls) {
     item?.let { println(it) } 
     //item?:println(123456)
}

再比如这句代码 println(files?.size),只会在files不为空时执行。

8、类型检查和自动类型转换
Kotlin中使用is运算符来检查数据类型和做类型转换,其实is关键字与 Java 中的instanceof关键字类似,如下代码所示:

/*  
当函数参数为字符串类型时,就返回字符串的长度,否则返回空  
 */  
fun getStringLength(obj: Any): Int? {
    if (obj is String) {
        // 自动将obj 转化为字符串类型  
        return obj.length
    }
    return null
}

上面的代码还可以写成:

fun getStringLength(obj: Any): Int? {
    if (obj !is String) return null
    // 自动将obj 转化为字符串类型  
    return obj.length
}

或者这样:

fun getStringLength(obj: Any): Int? {
    // 自动将obj 转化为字符串类型 
    if (obj is String && obj.length > 0) {
        return obj.length
    }
    return null
}

9、使用for循环

val items = listOf("apple", "banana", "kiwi")
for (item in items) {
    println(item)
}

或者

val items = listOf("apple", "banana", "kiwi")
for (index in items.indices) {
    println("item at $index is ${items[index]}")
}

10、使用while循环

val items = listOf("apple", "banana", "kiwi")
var index = 0
while (index < items.size) {
    println("item at $index is ${items[index]}")
    index++
}

11、in关键字的使用
判断一个对象是否在某一个区间内,可以使用in关键字

//如果存在于区间(1,Y-1),则打印OK
if (x in 1..y-1) 
  print("OK")

//如果x不存在于array中,则输出Out
if (x !in 0..array.lastIndex) 
  print("Out")

//打印1到5
for (x in 1..5) 
  print(x)

//遍历集合(类似于Java中的for(String name : names))
for (name in names)
  println(name)

//如果names集合中包含text对象则打印yes
if (text in names)
  print("yes")

12、when表达式
类似于 Java 中的 switch,但是 Kotlin 更加智能,可以自动判断参数的类型并转换为响应的匹配值。

fun cases(obj: Any) { 
  when (obj) {
    1       -> print("第一项")
    "hello" -> print("这个是字符串hello")
    is Long -> print("这是一个Long类型数据")
    !is String -> print("这不是String类型的数据")
    else    -> print("else类似于Java中的default")
  }
}

参考:
http://kotlinlang.org/docs/reference/basic-syntax.html

猜你喜欢

转载自blog.csdn.net/aidesudi/article/details/73168020