我的Kotlin学习笔记(1)

Kotlin是什么

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。(更多请参考英文官网或中文官网)

Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。

在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。(新闻来源)

Kotlin基础语法


我的Kotlin学习笔记(1)_第1张图片
Kotlin 文件以 .kt 为后缀

包声明

代码文件的开头一般为包的声明:


我的Kotlin学习笔记(1)_第2张图片
如果没有指明包,该文件的内容属于无名字的默认包



我的Kotlin学习笔记(1)_第3张图片
以上是默认导入到每个 Kotlin 文件的包

更多详细信息请看知乎:https://zhuanlan.zhihu.com/p/27162805

导入

除了默认导入之外,每个文件可以包含它自己的导入指令。(类似与Python)

可以导入一个单独的名字,如:

import foo.Bar       // 现在 Bar 可以不用限定符访问

也可以导入一个作用域下的所有内容(包、类、对象等):

importfoo.*     // “foo”中的一切都可访问

如果出现名字冲突,可以使用as关键字在本地重命名冲突项来消歧义:

importfoo.Bar    // Bar 可访问

importbar.BarasbBar     // bBar 代表“bar.Bar”

关键字  import  并不仅限于导入类;也可用它来导入其他声明:

  -顶层函数及属性

  -在对象声明中声明的函数和属性

  -枚举常量

与 Java 不同,Kotlin 没有单独的“import static”语法; 所有这些声明都用 import 关键字导入。

函数定义

函数定义使用关键字 fun


我的Kotlin学习笔记(1)_第4张图片
参数格式为: 参数 : 类型

无返回值的函数(类似Java中的void):


我的Kotlin学习笔记(1)_第5张图片


我的Kotlin学习笔记(1)_第6张图片
图片内容来源与网络

定义常量和变量

可变变量定义:var 关键字

var  <标识符>  :  <类型>  =  <初始化值>

不可变变量定义:val 关键字,只能赋值一次的变量(类似Java中final修饰的变量)

val  <标识符>  :  <类型>  =  <初始化值>

常量与变量都可以没有初始化值,但是在引用前必须初始化

编译器支持自动类型判断,即声明时可以不指定类型,由编译器判断。


注释(跟C#的注释一样)

// 这里是一个单行注释

/* 这是一个多行的

块注释。 */

与 Java 不同, Kotlin 中的块注释允许嵌套。

字符串模板

$ 表示一个变量名或者变量值

$varName 表示变量值

${varName.fun()} 表示变量的方法返回值:


我的Kotlin学习笔记(1)_第7张图片

NULL检查机制

Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两种处理方式,字段后加!!像Java一样抛出空异常,另一种字段后加?可不做处理返回值为 null或配合?:做空判断处理

//类型后面加?表示可为空

var age:String? = "23"

//抛出空指针异常

val ages=age!!.toInt()

//不做处理返回 null

val ages1 = age?.toInt()

//age为空返回-1

val ages2 = age?.toInt()?:-1

当一个引用可能为 null 值时, 对应的类型声明必须明确地标记为可为 null。

当 str 中的字符串内容不是一个整数时, 返回 null:

fun parseInt(str:String) : Int?{

}

以下实例演示如何使用一个返回值可为 null 的函数:


我的Kotlin学习笔记(1)_第8张图片
图片内容来源与网络

类型检测及自动类型转换

我们可以使用 is 运算符检测一个表达式是否某类型的一个实例(类似于Java中的instanceof关键字)。


我的Kotlin学习笔记(1)_第9张图片
类型检测

或者


我的Kotlin学习笔记(1)_第10张图片
另一种类型检测

甚至还可以


我的Kotlin学习笔记(1)_第11张图片

区间

区间表达式由具有操作符形式 .. rangeTo 函数辅以 in!in 形成。 区间是为任何可比较类型定义的,但对于整型原生类型,它有一个优化的实现。


我的Kotlin学习笔记(1)_第12张图片
图片内容来源与网络

更多内容请看:http://tli-tli.com/

你可能感兴趣的:(我的Kotlin学习笔记(1))