Kotlin学习笔记-01

116 阅读2分钟

前言

本文章的内容以Kotlin官方文档为主,细节方面会在学习过程中进行进一步完善~

0、概述

Kotlin是一个基于JVM的编程语言。与Java不同的是,Kotlin是一个函数式编程语言,内置了多种语法糖,相对于Java来说代码的臃肿度有所降低。

本文章侧重于介绍Kotlin与Java之间不同之处,方便Java开发者快速上手。

1、基础

  • 语句:Kotlin的每个语句最后不需要分号,如果需要在一行内写入多个语句,才需要使用分号隔开。

  • 一切都是对象:Kotlin的所有变量均是类对象,没有基本的数据类型(如int, byte, char等)。在这个意义上讲,可以在任何变量上调用成员函数与属性。Kotlin的一切类的父类是Any

  • 声明位置:与Java不同的是,Kotlin的变量和函数不是必须声明在类的内部,可以声明在文件的顶层,Kotlin的类文件以.kt结尾。**

     package lesson00_basic
     ​
     fun main() { 
         print("HELLO, ") 
         println("Kotlin") 
         println("i = $i, i2 = $i2") 
     } 
     ​
     var i = 0xFFFF
     val i2 = 5
    
  • 变量声明方式:Kotlin的变量有两种声明方式:

    • val定义只读局部变量,只能被赋值一次(声明时可以不赋值)
    • var定义可变变量。
  • 声明语法:Kotlin变量的声明语法与C type语言不同:

     val a: Int = 1  // 完整声明并初始化
     val b = 2       // 省略类型的声明,编译器自动推断类型
     val c: Int      // 没有初始值的声明必须指定类型
     c = 2
    
  • 空值与空检测:当可能用 null 值时,必须将引用显式标记为可空。可空类型名称以问号(?)结尾。

     fun parseInt(str: String): Int? { 
         // 该方法可能返回null
     } 
    

    在使用可能为空的类型时,需要先进行空检测。空检测通过后,变量会自动转换为非空值

     fun parseInt(str: String): Int? { 
         return str.toIntOrNull() 
     } 
     ​
     //sampleStart
     fun printProduct(arg1: String, arg2: String) { 
         val x = parseInt(arg1) 
         val y = parseInt(arg2) 
         ​
         // 直接使用 `x * y` 会导致编译错误,因为它们可能为 null
         if (x != null && y != null) { 
             // 在空检测后,x 与 y 会自动转换为非空值(non-nullable) 
             println(x * y) 
         } else { 
             println("'$arg1' or '$arg2' is not a number") 
         } 
     } 
    
  • 类型检测与类型转换:逻辑同上,对变量进行类型检测之后,会自动将其进行类型转换。

  • 操作符重载:Kotlin允许操作符重载,如对Array对象、String对象通过[]访问就是通过重载实现。