上篇介绍了Kotlin的特点以及其在Android Studio上的配置步骤,下面接着记录一些Kotlin的基本语法,权且当作笔记了😄。
基本数据类型:
1.变量的定义格式:var 变量名 : 数据类型
2.数据类型如下:
类型 所占字节
Double 8
Float 4
Long 8
Int 4
Short 2
Byte 1
注意:1⃣️Kotlin中数据类型首字母大写
2⃣️不支持数据类型的隐士转换,必须显示转换
3⃣️val声明常量,只可以被赋值一次,如果被多次复制,IDE则会发出编码错误警告,var声明变量,可以被多次赋值。
变量的命名风格使用驼峰风格,其完整的声明格式模板为:
val|var 变量名[: 变量类型][= 初始化赋值]
//示例
val anNum : Int =10 ;
var aByte: Byte = 1;
val aString = "Hello World" ; 等
//转换问题
var a: Byte = 1;
val num : Int = a; //此种转换Kotlin中是错误的(java中的隐式转换)
var num: Int = a.toInt();//正确方式(显示转换)
此处再区分下val 与 var 定义变量的区别:
val表示只读的,不可变的变量
var表示表示可读、可修改的变量
val和var都可以用来定义属性和局部变量
其他的类型如字符、数组等和Java使用类似,不再细说。
3.常用表达式及语句
if表达式
if表达式的基本用法与Java类似,但在Kotlin中还有些花式用法
//声明a b c,比较a和b,将大的赋值给c
val a =1
val b =2
var c: Int
//1.传统写法
if(a > b) { c = a }
else{ c = b }
//2.Kotlin写法,表达式
c =if(a > b) a else b
//3.Kotlin写法,if的分支可以是代码块,最后的表达式作为该块的值
c =if(a > b) { println(a) a }
else{ println(b) b }
when表达式
when表达式的基本用法:类似Java中的switch...case,但Kotlin的when表达式似乎更强大
funtestWhen(x: Int)
{
when (x) {
in1..10-> print("x在1-10的区间内")//区间判断!
in20..21-> print("x不在在20-21的区间内")//区间判断
is Int -> print("x是Int类型")//类型判断
1-> println(1)//x=1
3-> {
println("退出")
System.exit(0)
}
else->//x均不符合其他条件println("ArsenicBing")
}
}
//when像if 一样,每一个分支可以是一个代码块,它的值是块中最后的表达式的值
fun testWhen2(x: Int)
{
val c = when (x) {
1->2
2->3
else->0
}
}
let表达式
let实现if not null(如下)
val 数组 = ......
数组?.let {
...... // 代码会执行到此处, 假如数组不为null
}
“try/catch”表达式
fun test() {
val result = try {
count()
} catch (e: ArithmeticException) {
throw IllegalStateException(e)
}
// 使用 result
}
for循环的基本用法
//构造一个数组for(element in arrays)
val arrays = arrayOf("1","2","3");
for(element in arrays)
{
println(element);//循环打印出数组元素,类似Java中的for(String str : arrays){ }
}
VS
for(pos in arrays.indices)
{
println(arrays[pos]);//通过下标方式循环打印出数组元素,类似Java中的for(int i=*;i<*;i++)
}
while与do while循环和Java一样,这里不多做介绍了
4.方法函数
方法函数总体跟java中类似,只是写法上稍加区分,无非就是类型、返回值类型、方法名、参数表、方法体等。示例如下:
class Person {//val person = Person();//实例化
fun getName()
fun getAge(age: Int)
fun Top(top: Double)
}
fun getAge() = 27 等价于
fun getAge(): Int {
return 27
}
方法调用与java类似,不再多说。
5.方法的返回、跳转及break等
这三个和java中的使用几乎一毛一样,就是写法上少有区别,毕竟算是一种新的语言嘛
.return
funprintUpCaseName(name: String?){
val nameCopy = name ?:return//如果name为null,则return,printUpCaseName方法结束,下面代码不会执行
if(name =="1") {//常见的return
return;
}
println(nameCopy.toUpperCase());
}
.continue
fun continueTest(item: Array){
loop1@for(i in1..3) {
//打印 1~3的数字
println("loop1:$i")
loop2@for(j in5..8) {
//打印 5~8的数字
if(j ==5) {
//继续本循环
continue@loop2////在这里loop2写不写都可以,这个continue相对本循环的
}
if(j ==6) {//跳出本循环,继续loop1标签的循环
continue@loop1
}
println("loop2:$j")
}
}
}
.break
终止最直接包围它的循环。标签用法和continue一样。
fun breakTest(item: Array){
loop1@for(i in1..3) {//打印 1~3的数字
println("loop1:$i")
loop2@for(j in5..8) {//打印 5~8的数字
if(j ==5) {
break@loop1;//终止loop1循环,loop2循环自然也会终止
}
println("loop2:$j");
}
}
}
本次到这了,下次继续类、对象、接口相关的介绍,希望对一起学习的小伙伴有所帮助,😄