package my.demo
import java.util.*
和 Java 一样,包的定义一般放在源文件的最上头。和 Java 不一样的是,Kotlin 不要求包名和文件名一致。当然这样并不是很好。
fun sum(a: Int, b: Int): Int{
return a + b
}
fun sum(a: Int, b: Int) = a + b
第一个方法定义了方法名字,参数列表,两个 Int ,返回类型是 Int ,以及方法体。第二个方法省略了返回类型,并且简化了方法体。一定程度上简化了代码,提高可阅读性。
不需要返回类型的情况,同样的,可以明确声明这个方法返回类型,也可以通过推断来确定返回类型。第一种是推荐的。
fun printSum(a: Int, b: Int) : Unit{
println("$a + $b = ${a + b}")
}
fun printSum(a: Int, b: Int){
println("$a + $b = ${a + b}")
}
val 用来定义不变量。也就是 val 只能被赋值一次,和 Java 的 final 修饰一样的作用。
val a: Int = 1 // 明确的数据类型,立即赋值
val b = 2 // 立即赋值,并且推断数据类型
val c:Int // 明确的数据类型,但是没有明确赋值
c = 3
var 用来定义可变量。
var x = 5
x += 1
有两种注释方式,单行注释和多行注释。官方说法是 end-of-line 和 block comments ,行尾注释和注释块。
// 单行注释
/** 多行
注释 */
和 Java 不一样,注释块可以嵌套。这个暂时不明白什么意思。
这个比较强大,可以字符串中使用美元符$来使用变量,并且做一些简单的运算。
var a = 1
val s1 = "a is $a"
val s2 = "${sl.replace("is","was"), but now is $a}"
fun maxOf(a: Int,b: Int):Int{
if(a > b ){
return a
}else{
return b
}
}
可以简化为:
fun maxOf(a:Int,b:Int) = if(a>b) a else b
一个引用,如果可能是 null 的话,必须明确标识它是可为空的。
fun parseInt(str:String):Int? {
//...
}
这个方法的问号 ? 表示这个方法可以返回 null。所以,判断这个方法的返回值是否为空是必要的。
kotlin 用 is 代替了 Java 中的 instanceof ,效果是一样的。比 Java 优化的是,增加了自动类型转换。在 Java 中需要强转换,一般 IDE 会帮助你生成代码,而在 Kotlin 中,直接就省了。
if(obj is String && obj.length > 0){
// ...
}
两种常见的循环
val items = listOf("apple","banana","kiwifruit")
for(item in items){
// 和 Java 的 for each 语法一样
}
for(index in items.indices){
// 增加了索引,解决了 Java for each 没有索引的痛点
}
while (index < items.size){
index++
}
while 循环没有什么特殊的,和 Java 一样。
when 表达式是一个 kotlin 比 Java 优秀的特色。感受一下:
fun describe(obj : Any):String =
when(obj){
1 -> "One"
"hello" -> "Greeting"
is Long -> "Long"
!is String -> "Not a String"
else -> "unknown"
}
强大归强大,问题还是有,代码飘逸的话,脑袋的运行速度要跟上。
经常和 in 关键字一起使用
val x = 10
val y = 9
if(x in 1..y+1){
// x 在 1 到 y+1 区间内
}
val list = listOf("a","b","c")
if (-1 !in 0..list.lastIndex){
// -1 不在 0 到 list.lastIndex 区间内
}
if(list.size !in list.indices){
// list.size 不在 list 的索引组里
}
for 循环遍历也经常会用到,还有 step,downTo ,是不是很爽。
for(x in 1..6){
print(x)
}
for (x in 1..10 step 2){
}
for(x in 9 downTo 0 step 3){
}
迭代一个集合,for in 是最简单常见的方法。
for(item in items){
}
in 也可以用来判断一个对象是否在一个集合里。
when{
"orange" in items -> println("juicy")
"apple" in items -> pringln("apple is fine too")
}
val fruits = listOf("banana", "avocado", "apple", "kiwifruit")
fruits
.filter { it.startsWith("a") }
.sortedBy { it }
.map { it.toUpperCase() }
.forEach { println(it) }
不再需要 new 这个关键词了。
val rectangle = Rectangle(5.0,2.0)
- EOF -
本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。
转载请注明:文章转载自 Binkery 技术博客 [https://binkery.com]
本文标题: kotlin 自学笔记 - 基本语法
本文地址: https://binkery.com/archives/300001.html