Kotlin学习笔记之基础语法
2017-06-13 17:15
537 查看
1、定义包名
约定俗成,包的定义放置的代码源文件的顶部
这个和Java中定义没什么区别
2、定义方法
Java入门时第一个方法就是main方法,而Kotlin main就要简单多了,方法使用关键字fun声明,如下:
定义一个sum返回两个整数之和,可以看到参数定义和Java相反,方法返回类型也同样如此。
方式:参数名字+“:”+“数据类型”,如:a: Int、a:String;fun sum(…): Int
定义一个没有返回值的方法,当然Unit可以省略不加。
3、定义局部变量
分配一次(只读)局部变量:
a = 1, b = 2, c = 3
可变的变量:
4、注释
Kotlin注释和java和javascript一样支持用”//”注释行和使用“/* */”进行代码块注释。不同的是Kotlin注释支持嵌套。
5、字符串模板
6、使用条件表达式
常规写法
Kotlin简写
7、空值检测
Kotlin 是空指针安全的,所以使用Kotlin就再也不用为空指针异常而烦恼了。
比如下面代码,当item不为空时打印出值,反过来当item为空时执行打印123456。
再比如这句代码 println(files?.size),只会在files不为空时执行。
8、类型检查和自动类型转换
Kotlin中使用is运算符来检查数据类型和做类型转换,其实is关键字与 Java 中的instanceof关键字类似,如下代码所示:
上面的代码还可以写成:
或者这样:
9、使用for循环
或者
10、使用while循环
11、in关键字的使用
判断一个对象是否在某一个区间内,可以使用in关键字
12、when表达式
类似于 Java 中的 switch,但是 Kotlin 更加智能,可以自动判断参数的类型并转换为响应的匹配值。
参考:
http://kotlinlang.org/docs/reference/basic-syntax.html
约定俗成,包的定义放置的代码源文件的顶部
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简写
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
相关文章推荐
- Kotlin学习笔记1-1 入门-语法基础
- kotlin学习笔记-2-基础语法
- Kotlin 入门基础语法学习笔记
- Kotlin学习笔记-基础语法
- Kotlin学习笔记一基础语法
- Kotlin 博客 基础语法学习笔记
- Kotlin基础语法学习笔记
- Kotlin 学习笔记(二)—— 基础语法
- Kotlin开发安卓APP笔记-创建工程及基础语法
- Python学习笔记三:基础语法
- Java基础学习笔记_基础语法2
- Objective-C基础学习笔记(一)-程序整体语法结构
- Python学习笔记——语法基础
- CSS基础语法规则学习笔记
- Swift学习笔记基础语法-字符串与字符
- Java基础学习笔记二 Java基础语法
- Java基础学习笔记十 Java基础语法之final、static、匿名对象、内部类
- Swift 3.0 学习笔记-1-基础语法
- 第五天01 JAVA基础语法(类与对象)(学习笔记)
- Javascript学习笔记(一) -- 基础语法