入行没几年的小码农,近期学习Kotlin,做一份笔记记录自己的理解,此文依据《Kotlin实战》这本书的流程记录,部分示例内容均摘自《Kotlin实战》,记下自己的理解。
Kotlin学习笔记系列
新手上路,Kotlin学习笔记(一)-- Kotlin入门介绍
新手上路,Kotlin学习笔记(二)---方法(函数)部分
新手上路,Kotlin学习笔记(三)---类、对象、接口
新手上路,Kotlin学习笔记(四)---Lambda表达式在Kotlin中的使用
新手上路,Kotlin学习笔记(五)---Kotlin中的类型系统
新手上路,Kotlin学习笔记(六)---运算符重载和其它约定
新手上路,Kotlin学习笔记(七)---Lambda作为形参和返回值的使用
新手上路,Kotlin学习笔记(八)---泛型的使用
新手上路,Kotlin学习笔记(九)---注解和反射
fun main(args: Array) {
println("HelloWorld")
}
此代码即为Kotlin方式书写Java的main方法并打印HelloWorld
5、方法结尾没有分号,可以省略结尾的分号
对于有返回值的方法,将返回值位于参数之后,用冒号":"间隔,示例如下
fun methodSum(a: Int, b: Int): Int {
return a + b
}
2、Kotlin可以将方法简化,如果是有返回值的方法,可以用等号“=”将方法和表达式(有返回值的为表达式)连接,示例如下
fun methodSum(a: Int, b: Int): Int = a + b
3、Kotlin对于方法的返回值,会自动做类型推导,对于明确的表达式返回值,可以省略返回值的声明,如下示例和1、2是一样的
fun methodSum(a: Int, b: Int) = a + b
val str : String = ""
var index : Int = 0
2、var和val的区别
var name = "Tom"
4、对于String类型,kotlin增加了字符串模板的功能,可以在字符串中直接使用某个变量的值,而不需要Java字符串的拼接书写,如
var name = "Tom"
println("name is $name")
在字符串中使用$加上变量名,即可直接在字符串中显示该变量的值,类似于Java中的 "name is " + name;
字符串模板中还可以直接引用表达式,书写方式为 $ 加上大括号,大括号中为表达式内容。如
fun main(args: Array) {
println("1 + 2 is ${methodSum(1,2)}")
}
class Person {
var age = 0;
var name : String = ""
}
var变量将会自动生成get和set方法,val变量只会生成get方法
class Person(var age : Int = 0, var name : String = "")
效果是相同的,第二种写法更方便。
val person = Person()
person.age = 23
person.name = "Tom"
println("age is ${person.age}")
2、自定义get,set方法
class Person(var age : Int = 0, var name : String = "")
{
val isAdult : Boolean
get() = age > 18
}
上述示例中的isAdult就是自定义的get方法,取值时将根据age计算后返回。
enum class Color(val r: Int, val g: Int, val b: Int) {
RED(255, 0, ), GREEN(0, 255, 0), BLUE(0, 0, 255);
fun rgb() = (r * 256 + g) * 256 + b
}
2、"when"的使用
when是一个拥有返回值的表达式,所以可以在方法中直接用等号"="连接,示例如下
fun getColorName(color: Color) =
when (color) {
Color.RED -> "Red"
Color.BLUE -> "Blue"
Color.GREEN -> "Green"
}
由上方示例看出,when的分支之间不需要break来区分,某个分支匹配成功后,就结束该流程。
fun checkPerson(person : Person)
{
when
{
person.isAdult -> println("isAdult")
else -> println("age is ${person.age}")
}
}
1、"while"循环和"do-while"循环与java中的使用方式相同
2、"for"循环val numbers = 1..10
numbers表示1到10之间的十个数字 另外".."也可以用于字符之间的区间表示,如'A'..'D'就是 ABCD
fun pringNum()
{
for (i in numbers)
{
println(i)
}
}
“in”即表示在某个范围内取值。同时也存在相对应的 "!in"
另,还有由大到小的区间表达方式 downTo,设定每次更改值得步长step,及半闭合区间until(1 until 3 表示1,2,没有3)
fun readNumber(reader: BufferedReader) {
val number = try {
Integer.parseInt(reader.readLine())
} catch (e: NumberFormatException) {
null
}
println(number)
}
try或者catch的最后一个表达式将作为返回值
//下一篇 新手上路,Kotlin学习笔记(二)---方法(函数)部分