新手上路,Kotlin学习笔记(一)-- Kotlin入门介绍

        入行没几年的小码农,近期学习Kotlin,做一份笔记记录自己的理解,此文依据《Kotlin实战》这本书的流程记录,部分示例内容均摘自《Kotlin实战》,记下自己的理解。


        Kotlin学习笔记系列

        新手上路,Kotlin学习笔记(一)-- Kotlin入门介绍

        新手上路,Kotlin学习笔记(二)---方法(函数)部分

        新手上路,Kotlin学习笔记(三)---类、对象、接口

        新手上路,Kotlin学习笔记(四)---Lambda表达式在Kotlin中的使用

        新手上路,Kotlin学习笔记(五)---Kotlin中的类型系统

        新手上路,Kotlin学习笔记(六)---运算符重载和其它约定

        新手上路,Kotlin学习笔记(七)---Lambda作为形参和返回值的使用

        新手上路,Kotlin学习笔记(八)---泛型的使用

        新手上路,Kotlin学习笔记(九)---注解和反射


一、从HelloWorld开始认识Kotlin

fun main(args: Array) {
        println("HelloWorld")
    }
此代码即为Kotlin方式书写Java的main方法并打印HelloWorld
从该方法中可以看出Kotlin和Java不同的地方:
1、方法的声明使用的关键字为fun
2、参数的类型写在变量名的后面
3、原本Java中String[]的表示方式改为了Array,数组的表现方式变为了一个类(和集合是相同的)
4、println方法替代了Java中的System.out.println,该方法是kotlin库中的方法,还有很多类似的方法,讲Java的一些方法封装,便于使用

5、方法结尾没有分号,可以省略结尾的分号


二、方法(函数)

1、上面的main方法是一个没有返回值的方法,kotlin中对于没有返回值的方法,可以省略返回值。

对于有返回值的方法,将返回值位于参数之后,用冒号":"间隔,示例如下

	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

三、变量

1、Kotlin中变量的声明和Java中不同,以var或val开始,然后是变量名,接着是冒号“:”,后面是变量类型。示例如下
val str : String = ""
var index : Int = 0
2、var和val的区别
var为可变变量,该变量可以再次被赋值
val为不可变变量,类似于Java中的final类型,只允许赋值一次。
3、和方法同理,如果不给变量设定类型,编译器会自动的将初始化数据的类型赋给该变量,如下面的name会自动设置类型为String
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)}")
    }


四、类

1、类的声明以class为关键字,如
class Person {
    var age = 0;
    var name : String = ""
}
var变量将会自动生成get和set方法,val变量只会生成get方法
也可以将上面的类改为另一种声明方式
class Person(var age : Int = 0, var name : String = "")
效果是相同的,第二种写法更方便。
在Kotlin中直接使用person.age即可以自动调用相关的get或set方法,使用方式如下,会打印 age is 23
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计算后返回。


五、枚举和“when”

1、枚举的声明
枚举的声明需要两个关键字 enum class 
Kotlin中枚举 enum是一个软关键字,只有在class前才是枚举的作用,其他场景可以当做普通的名称使用
同样的,枚举也可以声明变量和方法,在枚举常量和方法之间必须要加一个分号!! 示例如下
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用于替换Java中的switch语句,其拥有更强大的功能。

when是一个拥有返回值的表达式,所以可以在方法中直接用等号"="连接,示例如下

	fun getColorName(color: Color) =
            when (color) {
                Color.RED -> "Red"
                Color.BLUE -> "Blue"
                Color.GREEN -> "Green"
            }
由上方示例看出,when的分支之间不需要break来区分,某个分支匹配成功后,就结束该流程。
如果需要多个分支执行相同的流程,只需在判断条件处用逗号","分开即可
同时,when中可以使用任何对象,而不是Java中只能使用特定的对象,当然,when也可以不使用对象,示例如下
    fun checkPerson(person : Person)
    {
        when
        {
            person.isAdult -> println("isAdult")
            else -> println("age is ${person.age}")
        }
    }


六、"while"循环和"for"循环

1、"while"循环和"do-while"循环与java中的使用方式相同

2、"for"循环
Kotlin中的"for"循环使用了区间的概念,使用两个点".."来表示区间,如
val numbers = 1..10
numbers表示1到10之间的十个数字   另外".."也可以用于字符之间的区间表示,如'A'..'D'就是 ABCD
打印1到10的数字就可以用一下代码实现
fun pringNum()
{
        for (i in numbers)
        {
            println(i)
        }
    }
“in”即表示在某个范围内取值。同时也存在相对应的 "!in"

另,还有由大到小的区间表达方式 downTo,设定每次更改值得步长step,及半闭合区间until(1 until 3  表示1,2,没有3)


七、异常和"try-catch"

1、和Java一样,异常的抛出用throw不同的是,Kotlin中的throw是一个表达式
2、Kotlin中不会强制要求捕获异常,比如使用IO流的IOException,可以不显式的捕获异常
3、try-catch-final的使用和Java基本一致,区别在于Kotlin中是一个表达式,如
	fun readNumber(reader: BufferedReader) {
        val number = try {
            Integer.parseInt(reader.readLine())
        } catch (e: NumberFormatException) {
           null
        }
        println(number)
    }

try或者catch的最后一个表达式将作为返回值


    //下一篇  新手上路,Kotlin学习笔记(二)---方法(函数)部分

你可能感兴趣的:(Kotlin)