kotlin变量、函数及程序逻辑控制

kotlin变量、函数及程序逻辑控制

内容来自郭霖《第一行代码(第三版)》,本文仅作为本人学习加强记忆之用

变量

val(value):用来声明一个不可变的变量,这种变量在初始赋值之后就再也不能重新赋值,对应java中的final变量
var(variable):用来声明一个可变的变量,这种变量在初始赋值之后仍然可以再被重新赋值,对应Java当中的非final变量

Java和kotlin数据类型对照表

Java基本数据类型Kotlin对象数据类型数据类型说明
intInt整型
longLong长整型
shortShort短整型
floatFloat单精度浮点型
doubleDouble双精度浮点型
booleanBoolean布尔型
charChar字符型
byteByte字节型

小结:

  1. kotlin完全抛弃了Java中的基本数据类型,全部使用了对象数据类型,在Java中int是关键字,而在kotlin中成了一个类,它拥有自己的方法和继承结构;
  2. 永远优先使用val来声明一个变量,而当val没有办法满足你的需求时才用var,这样设计出来的程序会更加健壮,也更加符合高质量的编程规范;

函数

定义函数的语法规则:

fun methodName(param1:Int,param2:Int):Int{
	return 0
}

fun(function的简写)是定义函数的关键字,无论你定义什么函数,都一定要使用fun来声明;
methodName函数名称,可以根据自己的喜好起任何名字;
函数名后面紧跟着一对括号,里面用来声明该函数接收什么参数,参数数量可以是任意多个,参数声明格式是参数名:参数类型,其中参数名是可以随便定义的,如果不想接收任何数据,这部分可以不写;
参数括号后面的那部分是可选的,用于声明该函数返回什么类型的数据,上述实例就表示该函数会返回一个Int类型的数据;
最后两个大括号之间的内容就是函数体了,我们可以在这个里面编写该函数的具体逻辑;

语法糖

当一个函数中只有一行代码时,Kotlin允许我们不必编写函数体,可以直接将唯一的一行代码写在函数的尾部,中间用等号连接即可,例如:

fun largerNumber(num1:Int,num2:Int):Int{
	return max(num1,num2)
}

上述函数改用语法糖写法如下:

fun largerNumber(num1:Int,num2:Int)=max(num1,num2)

程序的逻辑控制

程序的执行语句主要分为三种:顺序语句、条件语句和循环语句

条件语句

Kotlin中的条件语句主要有if和when
if语句

fun largerNumber(num1:Int,num2:Int):Int{
	var value=0
	if(num1>num2){
		value=num1
	}else{
		value=num2
	}
	return value
}

kotlin中if语句相较于Java多了一个额外的功能,它是可以有返回值的,返回值就是if语句每一个条件中最后一行代码的返回值。因此,上述代码就可以简化成:

fun largerNumber(num1:Int,num2:Int):Int{
	val value=if(num1>num2){
		num1
	}else{
		num2
	}
	return value
}

由于这里没有重新赋值的情况,因此可以用val关键字来声明value变量,最终将value变量返回
由于value其实也是一个多余的变量,我们可以直接将if语句返回,这样可以继续精简如下:

fun largerNumber(num1:Int,num2:Int):Int{
	return if(num1>num2){
		num1
	}else{
		num2
	}
}

由于函数体只有一行代码,可以改用语法糖写法,继续精简如下:

fun largerNumber(num1:Int,num2:Int)=if(num1>num2){
		num1
	}else{
		num2
	}

继续精简,压缩成一行代码:

fun largerNumber(num1:Int,num2:Int)=if(num1>num2)num1 else num2

when语句

例如一个查询考试成绩的功能,输入一个学生姓名,返回该学生的考试的分数的函数,先用if语句来实现,如下:

fun getScore(name:String)=if(name=="Tom"){
	86
}else if(name=="Jim"){
	77
}else if(name=="Jack"){
	95
}else if(name="Lily"){
	100
}else{
	0
}

改成when语句写法,如下:

fun getScore(name:String)=when(name){
	"Tom"->86
	"Jim"->77
	"Jack"->95
	"Lily"->100
	else ->0
}

when语句允许传入一个任意类型的参数,然后可以在when的结构体中定义一些列的条件,格式是:
匹配值->{执行逻辑}
当执行逻辑只有一行代码时{}可以省略,when除了精确匹配之外,还可以进行类型匹配,例如:

fun checkNumber(num:Number){
	when(num){
	is Int->println("number is Int")
	is Double->println("number is Double")
	else ->println("number not support")
	}
}

循环语句

kotlin区间的概念

val range=0..10
上述代码表示一个0到10的区间,并且两端都是闭区间,这意味着0到10这两个端点都是包含在区间中的,用数学的方式表达出来就是[0,10]
val range=0 until 10
上述代码表示创建了一个0到10左闭右开区间,数学表达式式[0,10)

for-in循环
for(i in 0..10){
	println(i)
}

打印结果,如下:

0
1
2
3
4
5
6
7
8
9
10

Process finished with exit code 0
for(i in 0 until 10 step 2){
	println(i)
}

打印结果,如下:

0
2
4
6
8

Process finished with exit code 0

使用downTo关键字降序区间

fun forTestFun4(){
    for(i in 10 downTo 0){
        println(i)
    }
}

打印结果如下:

10
9
8
7
6
5
4
3
2
1
0

Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值