Kotlin学习笔记1-1 入门-语法基础
来源:互联网 发布:淘宝vip专享 编辑:程序博客网 时间:2024/06/06 01:34
入门-语法基础
Kotlin官网:Getting Started-Basic Syntax
声明包
和Java相同,必须在源文件的最上端。
不同的是声明的包不要求和文件夹路径相同,可以放在任意位置
声明方法
fun 方法名(参数):返回值{ … }
例如一个”两个Int参数,返回值也为Int”的函数
fun sum(a: Int, b: Int): Int { return a + b}
可以写成表达式的方式,上面的函数等价于
fun sum(a: Int, b: Int) = a + b
对于无返回值函数,Java中void在Kotlin中对应为Unit,并且可以省略
fun printSum(a: Int, b: Int) { println("sum of $a and $b is ${a + b}")}
等价于
fun printSum(a: Int, b: Int) : Unit{ println("sum of $a and $b is ${a + b}")}
声明变量
只读变量
val a: Int = 1 // 立刻赋值val b = 2 // 立刻赋值,编译器可以推测出b为Int型,所以Int型声明可以省略val c: Int // 如果不是立刻赋值则必须声明类型,因为编译器无法推测出c = 3 // 推迟赋值
可变变量
var x = 5x += 1
顶层变量
var x = 0fun foo(){ x +=1}
注释
//单行注释/* 多行 注释*/
和Java不同,多行注释可以嵌套
/* 注释 /* 注释2 */*/
字符串模板
和Java中String的format类似,可以用$替换变量,支持表达式
val a = 1println("a=$a")println("a+1=${a+1}")
输出结果
a=1
a+1=2
条件表达式
if else else if写法和Java相同
fun maxOf(a: Int, b: Int): Int { if (a > b) { return a } else { return b }}
区别是Kotlin中if为表达式,而不是Java中的语句块,可以用来赋值。上面的例子也能写成
fun maxOf(a: Int, b: Int) = if (a > b) a else b
例如给变量赋值
val a = 1val b =if(a>10){ 10}else if(a>0){ 1}else{ -1}println("b=$b")
输出结果
b=1
可null变量和null检查
Kotlin中默认认为变量是不能为空的,如果需要一个变量可以为空必须显式声明
例如方法返回值可能为空
fun parseInt(str: String): Int? { return null}
如果对象被声明为可能为空,在使用时必须检查不为后使用或者声明为空跳过。Kotlin是空安全的。
val a = parseInt("1") //a为Int?if(a!=null){ //检查不为空后调用方法 println(a.toLong())}println(a?.toLong()) //声明为空时跳过
类型检查和自动类型转换
Kotlin中使用”is”关键字检查类型是否匹配,相当于Java中的instanceof,obj is String,obj !is String。
Kotlin中检查过类型后,在检查类型条件的作用域中都可以直接当做对应类型使用,无需再声明类型转换
fun getStringLength(obj: Any): Int? { if (obj is String) { // `obj` is automatically cast to `String` in this branch return obj.length } // `obj` is still of type `Any` outside of the type-checked branch return null}
循环语句
for循环和JS类似,使用for-in的格式
val items = listOf("apple", "banana", "kiwi")//直接遍历列表元素for (item in items) { println(item)}//通过下标遍历for (index in items.indices) { println("item at $index is ${items[index]}")}
while循环和Java相同
when表达式
Kotlin中没有switch,取而代之的是when。
Java中switch只能用int型常量作为case条件(1.7中后支持String),和Java不同,Kotlin的when支持任意条件。
和if类似,when也是表达式,可以为其他对象赋值。
fun describe(obj: Any): String =when (obj) { 1 -> "One" "Hello" -> "Greeting" is Long -> "Long" !is String -> "Not a string" else -> "Unknown"}
区间
Kotlin中使用a..b声明区间,使用”in”关键字声明区间内,可以作为循环条件或者if条件使用。
//作为if条件//例1:val x = 10val y = 9if (x in 1..y+1) { //使用变量作为区间边界 println("fits in range")}//例2:val list = listOf("a", "b", "c")if (-1 !in 0..list.lastIndex) { println("-1 is out of range")}if (list.size !in list.indices) { //不在区间内 println("list size is out of valid list indices range too")}//作为for循环的条件for (x in 1..5) { //[1,5] print(x) //输出12345}for (x in 1 until 5) { //[1,5) print(x) //输出1234 }for (x in 1..10 step 2) { //步进为2 print(x) //输出13579}for (x in 9 downTo 0 step 3) { //步进为3,倒序 print(x) //输出9630}
集合
val items = listOf("apple", "banana", "kiwi")//遍历元素for (item in items) { println(item)}//判断集合是否包含元素when { "orange" in items -> println("juicy") "apple" in items -> println("apple is fine too")}//使用lambda表达式操作集合fruits.filter { it.startsWith("a") }.sortedBy { it }.map { it.toUpperCase() }.forEach { println(it) }
创建对象
Kotlin没有new关键之,创建类的对象直接使用val a = 类名(参数)
val rectangle = Rectangle(5.0, 2.0) //no 'new' keyword requiredval triangle = Triangle(3.0, 4.0, 5.0)
- Kotlin学习笔记1-1 入门-语法基础
- Kotlin 入门基础语法学习笔记
- Kotlin基础语法学习笔记
- Kotlin学习笔记-基础语法
- Kotlin 学习笔记(1)基本语法
- Kotlin学习笔记之基础语法一
- Kotlin 博客 基础语法学习笔记
- Kotlin学习笔记之基础语法
- kotlin学习笔记-2-基础语法
- Kotlin学习笔记——基础语法
- Kotlin 基础语法学习
- 【Kotlin】基础语法学习
- kotlin基础语法学习
- Kotlin入门基础笔记
- Kotlin学习过程 二 Kotlin基础语法
- Android Kotlin学习--基础语法
- kotlin学习笔记1
- Kotlin语法 学习笔记(一)
- norflash芯片内执行(XIP)
- 1224的坑
- Kotlin学习笔记1-2 入门-常用写法
- profiling tools
- LeetCode 732. My Calendar III
- Kotlin学习笔记1-1 入门-语法基础
- 网络直播多人PK计数器,计数工具下载
- 23种设计模式和在JDK/Android源码中的应用
- 莱布尼兹其实离开我们并不遥远
- 第五讲 访问控制技术
- 控制台报错Disconnected
- Kotlin学习笔记1-3 入门-代码规范
- OProfile Tutorial
- exploiting-leaked-thread-handle