无论什么编程语言,总是要处理数据的,处理数据就需要使用变量来保存数据。
常量与变量的区别是:
- 常量一旦保存某个数据之后,该数据就不会发生改变;
- 变量保存的数据则可以多次发生改变,只要程序对变量重新赋值即可。
一、分隔符
Kotlin语言中的分隔符包括:分号(;
)、花括号({}
)、方括号([]
)、圆括号(()
)、空格、圆点(.
)。
1.1、分号
Kotlin不强制要求每条语句必须以分号结尾,当然也可以使用分号表示语句结束。
如果单独一行内只有一条语句,Kotlin允许这条语句不以分号结尾。如果在同一行内写多条语句,则前面语句需要使用分号表示结束。
var name ="HunterArley";println(name)
Kotlin允许一条语句可以跨多行。
var name = "HunterArley"
name +=
".top"
var hasH = name.startsWith("Hun")
var len = name
.length
println(hasH)
println(len)
语句是可以跨多行的,但是一个字符串、变量名不能夸多行。
1.2、花括号
花括号的作用就是定义一个代码块。一个代码块指的就是“{”和“}”所包含的一段代码。代码块在逻辑上是一个整体。
对于Kotlin而言,类体部分、枚举和方法体需要放在花括号中定义。
条件语句中的条件执行体和循环语句中的循环体也要放在代码块里。
1.3、方括号
Kotlin中的方括号是一个索引运算符,其主要作用是用于访问数组元素、List集合元素和Map集合元素。
1.4、圆括号
圆括号是一个功能非常丰富的分隔符,在定义函数、方法时必须使用圆括号来包含所有的形参声明,在调用函数时也必须使用圆括号来传入实参值。圆括号还可以将表达式中某个部分括成一个整体,保证这个部分优先计算。
1.5、空格
Kotlin语言使用空格分隔一条语句的不同部分。
Kotlin中的空格包含空格符(Space)、制表符(Tab)和回车符(Enter)等。
1.6、圆点
圆点(.)通常用作类、结构体、枚举、实例和它的成员之间的风格符,表明调用某个类或某个实例的指定成员。
二、标识符规则
标识符,就是用于给程序中的变量、累、枚举函数等命名的名字。
标识符的长度没有限制。
Kotlin在使用标识符时,需要逐一一下规则:
- 标识符可以由字符、数字和下划线(_)组成,但不能以数字开头。
- 标识符不能是Kotlin的硬关键字,在特定上下文中不能使用软关键字和修饰关键字,但可以包含关键字。
- 标识符不能包含空格。
- 标识符只能包含下划线(_),不能包含@、#等特殊字符。
三、Kotlin中的关键字
Kotlin中的一些具有特殊用途的单词被称为关键字(keyword),定义标识符的时候,不要与关键字相同,否则将引起错误。
Kotlin的关键字可以分为3类:
- 硬关键字:无论在什么情况下都不能用作标识符。
- 软关键字:可以在它们不起作用的上下文中用作标识符。
- 修饰符关键字:可以在代码中用作标识符。
Kotlin的硬关键字:
关键字 | 关键字的作用 |
---|---|
as | 用于做类型转换或为import语句指定别名 |
as? | 类型安全的类型转换运算符 |
break | 中断循环 |
class | 声明类 |
continue | 忽略本次循环剩下的语句,重新开始下一次循环 |
do | 用于do while循环 |
else | 在if分支中使用 |
false | 在Boolean类型中表示假的直接量 |
for | 用于for循环 |
fun | 声明函数 |
if | 在if分支中使用 |
in | 在for循环中使用;in还可以作为双目运算符,检查一个值是否处于区间或集合内;in也可以在when表达式中使用;in还可用于修饰泛型参数,表明该泛型参数支持逆变。 |
!in | 可作为双目运算符in的反义词;!in也可在when表达式中使用 |
is | 用于做类型检查(类似Java中的instanceof) |
!is | 用于做类型检查 |
null | 代表空的直接量 |
object | 用于声明对象表达式或定义命名对象 |
package | 用于为当前文件指定包 |
return | 声明函数的返回 |
super | 用于引用父类实现的方法或属性,或者在子类构造器中调用父类构造器。 |
this | 代表当前类的对象或在构造器中调用当前类的其他构造器 |
throw | 用于抛出异常 |
true | 在Boolean类型中表示真的直接量 |
try | 开始异常处理 |
typealias | 用于定义类型别名 |
val | 声明只读属性或变量 |
var | 声明可变属性或变量 |
when | 用于when表达式 |
while | 用于while循环或do while循环 |
Kotlin的软关键字:
关键字 | 关键字的作用 |
---|---|
by | 用于将接口或祖先类的实现代理给其他对象 |
catch | 在异常处理中用于捕捉异常 |
constructor | 用于声明构造器 |
delegate | 用于指定该注解修饰委托属性存储其委托实例的字段 |
dynamic | 主要用于在Kotlin/JavaScript中引用一个动态类型 |
field | 用于指定该注解修饰属性的幕后字段 |
file | 用于指定该注解修饰该源文件本身 |
finally | 异常处理中的finally块 |
get | 用于声明属性的getter方法,或者用于指定该注解修饰属性的getter方法 |
import | 用于导包 |
init | 用于声明初始化块 |
param | 用于指定该注解修饰构造器参数 |
property | 用于指定该注解修饰整个属性 |
receiveris | 用于指定该注解修饰扩展方法或扩展属性的接收者 |
set | 用于声明属性的setter方法,或者用于指定该注解修饰属性的setter方法 |
setparam | 用于指定该注解修饰setter方法的参数 |
where | 用于为泛型参数增加限制 |
Kotlin的修饰符关键字:
关键字 | 关键字的作用 |
---|---|
abstract | 用于修饰抽象类或抽象成员 |
annotation | 用于修饰一个注解类 |
companion | 用于声明一个伴生对象 |
const | 用于声明编译时常量 |
crossinline | 用于禁止在传给内联函数的Lambda表达式中执行非局部返回 |
data | 用于声明数据类 |
enum | 用于声明枚举 |
external | 用于声明某个方法不由Kotlin实现 |
final | 用于禁止被重写 |
infix | 声明该函数能以双目运算符的格式执行 |
inline | 用于声明内联函数,Lambda表达式可在内联函数中执行局部返回 |
inner | 用于声明内部类,内部类可以访问外部类的实例 |
internal | 用于表示被修饰的声明只能在当前模块内可见 |
lateinit | 用于修饰一个non-null属性,用于指定该属性可在构造器之外的地方完成初始化 |
noinline | 用于禁止内联函数中个别Lambda表达式被内联化 |
open | 用于修饰类,表示该类可派生子类;或者用于修饰成员,表示该成员可以被重写 |
out | 用于修饰泛型参数,表明该泛型参数支持协变 |
override | 用于声明重写父类的成员 |
private | private访问权限 |
protected | protected访问权限 |
public | public访问权限 |
reified | 用于修饰内联函数中的泛型形参,接下来在该函数中就可像适用普通类型一样使用该类型参数 |
sealed | 用于声明一个密封类 |
suspend | 用于标识一个函数后Lambda表达式可作为暂停 |
tailrec | 用于修饰一个函数可作为尾随递归函数使用 |
vararg | 用于修饰形参,表明该参数是个数可变的形参 |
四、声明变量
Kotlin是强类型的语言,其变量必须先声明、后使用,声明变量时必须显式或隐式指定变量的类型,类型限制了一个变量能被赋的值,也限制了一个表达式可以产生的值,还限制了在这些值上可以进行的操作。
声明变量需要使用var或val:
var|val 变量名 [:类型] [= 初始值]
- var声明的变量是值可变的;
- val声明的变量是值不可变的。
不能在声明变量时既不指定变量类型,也不指定变量初始值。
根据常量所在的位置不同,Kotlin的常量分为两种:
- 局部范围的常量:这种常量允许在声明时不指定初始值,只要在第一次使用之前指定初始值即可。
- 类的常量属性:这种常量属性既可以在声明时指定初始值,也可以在类或结构体的构造器中指定初始值。
//定义常量,没有显式指定类型
val maxAge = 110
//定义常量时,显式指定了常量的类型和常量的初始值
val name: String = "HunterArley"
//局部范围的常量,声明时不指定初始值
val myName: String
网友评论