对于一种语言来讲,变量和函数(方法)是最重要的两类语法。因为Kotlin语法糖的存在,让本不支持函数语法的JVM支持将函数放到代码的最顶层。本篇文章主要是介绍变量的定义和函数的基本使用方法。编程
绝大多数编程语言都有变量和常量的概念,Kotlin和Java相似,尽管没有常量语法,但可使用final定义一个不可修改的变量,其实就至关于常量。数组
在Java中是这样定义变量的:bash
int a=10;
final double b=1.0;
String s="Hello";
int ok;
复制代码
在Kotlin中,定义变量和Java有几点不一样之处:微信
看一下示例代码:编程语言
var a=10
var b:Double=2.0
val c="hello"
var d:Int
d=a
c="hi" // 编译器报错,由于c是常量
复制代码
不管什么语言,函数的定义必定有如下几个部分:函数
Kotlin代码:优化
fun add(a: Int, b: Int): Int {
return a + b
}
复制代码
能够看到,定义Kotlin函数时,函数头除了包含函数名外,还须要有fun关键字。至于参数,与定义Kotlin变量的方式相同。若是函数有返回值,那么返回值类型在函数定义部分末尾指定,与函数定义部分用冒号(:)分隔。若是函数没有返回值,则能够返回Unit,或者什么都不反回,如:ui
fun add(a: Int, b: Int) {
a + b
}
复制代码
Kotlin中的注释与Java中的注释同样,也有单行注释和块注释。编码
// 表示大那行注释 /* */ 表示块注释spa
Kotlin块注释还支持嵌套:
/* hello /* world */ */
在Kotlin中,一切都是对象。任何变量都有相应的方法和属性。为了提升效率,Kotlin对部分数据类型进行了优化,变成了内置的数据类型。不过这些类型的变量用起来就像普通的类,也有本身的方法和属性。
经常使用的数据类型有数值、字符、布尔值和数组。
Kotlin提供的内置数据类型:
数据类型 | 字节数 |
---|---|
Double | 8 |
Float | 4 |
Long | 8 |
Int | 4 |
Short | 2 |
Byte | 1 |
Kotlin代码:
var a: Int = 10
var b: Double = 2.0
val c: Boolean = true
var d: Short = 0
复制代码
Kotlin和Java同样,也有默认类型,整数默认类型是Int,浮点数默认类型是Double。
不过在Java中占字节数少的变量转为占字节数多的变量时,会自动进行转换。而Kotlin不能够,Kotlin提供了一系列的方法用来进行类型转换:
Kotlin和Java同样,也提供了一些特殊的表示法,用于表示Double和Float类型的值,以及十六进制和二进制
Kotlin还提供数值分隔符,使用下划线(_)分隔,能够根据具体状况进行分隔,举个例子,1000000表示一百万,为了方便读取,能够写成1_000_000。
Kotlin语言中,字符类型用Char表示,不过和Java不一样的是,Kotlin中不能将字符直接看做是数字。
与Java同样,字符用单引号,Kotlin也支持反斜杠转义符,如常见的\n,\t,\b 等等。
虽然字符不能直接做为数值使用,可是可使用toInt()方法将字符转成相应的ASCII码值。
Kotlin中布尔类型用Booleann描述,该类型有两个值:true和false。Boolean类型有3中操做:逻辑或(||),逻辑与(&&)和逻辑非(!)。
看如下代码示例:
var flag1 : Boolean =true
val flag2:Boolean= false
if(flag1 && flag2){
println("true")
}
if(flag1 || flag2){
println("false")
}
复制代码
在Kotlin中,用Array描述数组,该类中包含了get和set方法,size属性及其余成员方法。
在Kotlin中定义数组的方法有不少,使用arrayOf()函数定义能够存储任意值的数组;使用arrayOfNulls函数定义指定长度的空数组(数组元素中没有值);使用Array类的构造器指定数组长度和初始化数据的方式定义数组;使用intArrayOf、shortArrayOf等函数定义指定类型的数组,并初始化。请看示例:
val arr1= arrayOf(1,2,3)
println(arr1[2])
arr1[2]=10
println(arr1[2])
var arr2= arrayOfNulls<Double>(10)
println(arr2.size)
var arr3= intArrayOf(1,2,3,4,5)
println(arr3[0])
复制代码
Kotlin中使用String表示字符串,有如下两种字符串:
val s1="Hello\n"
val s2="World"
val s3="""Hello World"""
复制代码
Kotlin中海油一个很重要的功能,就是字符串模板。所谓字符串模板,就是在字符串中添加若干占位符,内容在后期指定,也就是说,用模板能够设置字符串动态的部分。
模板使用美圆符号 i”,其中
后面的i是变量,还能够用${表达式}来做占位符。
val s1="Hello $arr1[0]"
val s2="World ${a+b}"
复制代码
Kotlin中也有包的概念,包在表达方式上与Java彻底同样,不过Kotlin中的包和目录没有关系,Kotlin的包仅仅是为了引用文件中的资源而设计的,先看段代码:
package com.example.kotlin
fun adtion() {}
class MyClass {}
复制代码
上面代码中,定义了一个函数和一个类,实际上,完整的函数名和类名分别是com.example.kotlin.adtion和com.example.kotlin.MyClass。
那么在其余的Kotlin文件中,若想使用adtion方法或者MyClass类,直接调用com.example.kotlin.adtion和com.example.kotlin.MyClass。
固然,为了方便,也能够相似Java同样,使用import先导入该文件
import com.example.kotlin.adtion
import com.example.kotlin.MyClass
复制代码
或者
import com.example.kotlin.*
复制代码
Kotlin还支持给导入的资源起一个别名:
import com.example.kotlin.adtion as a
import com.example.kotlin.MyClass as m
复制代码
Kotlin的控制流与Java基本相同,只是使用了when替代了switch。固然,在Kotlin中,if和when不只能够做为语句使用,还能够看成表达式使用。
Kotlin中,if语句自己就是表达式,有返回值,所以Kotlin中不会有如Java那样的三木运算符。下面是条件语句的基本使用:
if(a<b){
println(a)
}else{
println(b)
}
复制代码
若是将if语句看成表达式来使用的话,知足条件的最后一条执行语句就是返回值:
var min=if(a<b){
println(a)
a
}else{
println(b)
b
}
复制代码
Kotlin中,使用when替换了switch语句,标准使用以下:
when (a) {
1 -> {
println(1)
}
2 -> {
println(2)
}
else -> {
println("else")
}
}
复制代码
使用when语句时,应该注意:
固然,when语句也能够做为表达式来使用,第一个知足条件的最后一条语句做为when语句的返回值:
var m=when (a) {
1 -> {
println(1)
}
2 -> {
println(2)
}
else -> {
println("else")
}
}
复制代码
若是多个分支执行的代码都同样,能够在一个分支用逗号(,)分隔多个条件,如:
when (a) {
1, 3, 5 -> {
println(1)
}
2, 4, 6 -> {
println(2)
}
else -> {
println("else")
}
}
复制代码
when中的分支条件不只能够是常量,还能够是表达式,如:
when (a) {
in 1..5 -> {
println(1)
}
in 6..8 -> {
println(2)
}
else -> {
println("else")
}
}
复制代码
在Kotlin中,for循环能够直接枚举集合中的元素,也能够按集合索引来枚举元素。
for(item in collection) println(item)
复制代码
var arr= arrayOf(2,4,6,8)
for(item: Int in arr){
println(item)
}
复制代码
for(i in arr.indices){
print(arr[i])
}
复制代码
Kotlin中的while和Java中的while循环是同样的,也分while和do..while,代码以下:
var i:Int=0
while(i<10){
println(i)
i++
}
复制代码
在循环中,使用continue和break,continue是结束这次循环,执行下次循环,break是跳出循环,执行循环以后的步骤,这点和Java同样。
尽管Kotlin和Java是无缝衔接的,但在语法上仍是有许多不一样的,最重要的是编码习惯和观念的改变,所以若想充分掌握Kotlin语言,还须要下一番功夫。
后续内容,请关注个人微信公众号——Android机动车