Kotlin学习笔记(1) -- 变量、函数和类型

笔记内容来自 扔物线 的 https://kaixue.io/kotlin-basic-1/

项目中添加 Kotlin 支持

1、如果是新项目,需要在新建立项目的时候直接选择 kotlin 编程语言即可

  • File -> New -> New Project …
  • Choose your project -> Phone and Tablet -> Empty Activity
  • Configure your project -> Language 选择 「Kotlin」

2、如果添加到现有项目,需要添加:

项目根目录下的 ‘build.gradle’ 下:

    ?
    ext.kotlin_version = '1.3.41'
    repositories {
        ...
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0-beta05'
        ?
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

app 目录下的 ‘build.gradle’ 下:

?
apply plugin: 'kotlin-android'
...
​
android {
    ...
}
​
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    ?
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    ...
}

变量的声明

var v: View

跟 java 的不同:

  • 有一个 var(variable)/val(value) 关键字
  • 类型和变量名位置互换了
  • 中间是用冒号分隔的
  • 结尾没有分号

空安全设计

通过 IDE 的提示来避免调用 null 对象,从而避免 NullPointerException。

一些操作符:

操作符 含义 例子
? 解除空限制,即对象可以为空 var view: View? = null
?. 做一次非空确认之后再调用方法,并且线程安全 view?.setBackgroundColor(Color.RED)
!! 断言式,编译器不帮助检查,也就不符合空安全设计 var view: View? = null

延迟初始化

采用 lateinit 关键字。

它的作用就是让 IDE 不要对这个变量检查初始化和报错。换句话说,加了这个 lateinit关键字,这个变量的初始化就全靠你自己了,编译器不帮你检查了

函数

fun cook(name: String): Food {
    ...
}
  • fun 关键字开头
  • 返回值写在了函数和参数后面
  • 如果无返回值,返回值类型可省略
  • 函数参数也有可空控制

get()/set() 方法

默认已实现 get 、set 方法,如果要完成 ”钩子“效果,自己在变量下方写 get、set方法(注意 field 的概念)

类型

条件满足如下之一就不装箱:

  • 不可空类型。
  • 使用 IntArray、FloatArray 等

类和对象

关键字/操作符 含义
public 可省略,默认 public
: 继承和实现
override override 函数的可见性是继承自父类
final 类默认是 final 的,不可继承
open 解除 final 限制,可以继承。没有父类到子类的遗传性

类型的判断和强转

关键字/操作符 含义
is 先进行类型判断,可以省略强转的写法
as 不进行类型判断,直接进行强转调用。强转不成功就会抛类型转换异常
as? 不进行类型判断,直接进行强转调用。强转不成功就不执行

你可能感兴趣的:(Kotlin)