当前位置:网站首页>Kotlin—基本语法 (五)
Kotlin—基本语法 (五)
2022-07-31 09:09:00 【光临天下】
这篇博客讲表达式、语句和函数,讲的有点多,请认真读。
一、表达式和语句
1、if
在Kotlin中if就是语句也是表达式。(表达式有返回值,语句没有),所以比Java更加灵活和简便些。
1.1 if语句使用方式
if语句很简单,和Java也一样。接下有几个栗子吃
栗子1:
fun main(args: Array<String>) {
val a = 90
if (a > 100) {
println("a>100")
}
if (a < 100)
println("a<100")
if (a == 100) println("a<100")
}栗子2:
fun main(args: Array<String>) {
val a = 90
if (a > 100) {
println("a>100")
} else {
println("a<100")
}
}栗子3:
fun main(args: Array<String>) {
val a = 90
if (a > 100) {
println("a>100")
} else if (a == 100) {
println("a=100")
} else if (a < 100)
println("a<100")
}都是一些正常使用。
1.2 if表达式
Kotlin的简化可能会让你感觉不规范,或者难以接受,哈哈。看栗子
栗子
fun main(args: Array<String>) {
val a = 90
var b = if (a < 100) {
println("a<100")
"b大于100"
} else {
println("a>100")
"b小于于100"
}
println(b)
}其它的依次类推。
2 when
Kotlin中没有switch语句,但有更好用的when。when和if一样,既可以是语句,有可以是表达式。
2.1 when语句使用
我写了一个比较全的栗子
fun main(args: Array<String>) {
val a = 90
var b = ""
when (a / 10) {
10 -> {
b = "a=10"
}
9 -> b = "9"
8, 7 -> "b=8或者7"
else -> "b<7"
}
println(b)
}2.2 when 表达式
fun main(args: Array<String>) {
val a = 90
var b = when (a) {
100 -> "b=100"
90 -> "b=90"
80, 70 -> "b在80-70之间"
else -> "b<60"
}
println(b)
}3 while 和 do whlie语句
while和do whlie是Kotlin的循环语句,它们都是语句,没有表达式。也和Java的使用方式一样,同时也可减少代码。
3.1while语句使用
fun main(args: Array<String>) {
var i=0
while(i+1<100){
i++
}
println(i)
}
3.2 do while语句使用
下面的例子,清楚的说明了do while至少执行一次
fun main(args: Array<String>) {
var i = 0
do {
println("第${i}次")
++i
println("i=$i")
} while (i == 0)
}4. for循环
Kotlin中的for循环和Java就大不相似了,所以好多Java工程师,一使用for就对kotlin有了反感。
看看kotlin的for循环怎么写吧!
栗子1:
遍历区间
fun main(args: Array<String>) { for (a in 1..100) { // 定义了变量a // 一个区间类似于集合,区间里保存这1到100的整数 println(a) // 把区间的数遍历赋值给a } }
栗子2:
遍历集合
fun main(args: Array<String>) { val intArray= intArrayOf(11,12,13,14,15) // 定义集合 for (a in intArray) { // 定义了变量a println(a) // 把集合的数遍历赋值给a } }
栗子3:
获取集合下标和值的遍历
fun main(args: Array<String>) { val intArray = intArrayOf(11, 12, 13, 14, 15) // 定义集合 for (a in intArray.indices) { //indices为下标,集合和数组都有这个量 println("集合下标${a}的值为${intArray[a]}") } }
5.返回和跳转
Kotlin 有三种结构化跳转表达式:
- return。默认从最直接包围它的函数或者匿名函数返回。
- break。终止最直接包围它的循环。
- continue。继续下一次最直接包围它的循环。
break和在Java中基本使用一样。
break 中断循环,退出循环
fun main(args: Array<String>) { for (a in 1..100) { if (a == 5) { break } println(a) } }continue 跳过本次循环,继续下次
fun main(args: Array<String>) { for (a in 1..10) { if (a == 5) { continue } println(a) } }
6.区间
什么是区间,如果你没有一点概念,请查看数学上的区间。在数学上区间很容易理解,在编程更容易理解。就是一组整数或者是字符,别的不行。
区间还分为闭区间和半开区间两种
6.1 闭区间和半开区
闭区间和半开区的区别就是包括的范围。
闭区间:比较容易,就是指从指定的数开始到指定的书结束。包括指定的头和尾巴。使用..表示 栗子1
半开区间:就是从指定的数开始到指定的数结束,但不包括最后的数。使用until 表示 栗子2
如果你学过Java肯定知道包左不包右的意思,这里相同。
栗子1:
fun main(args: Array<String>) { for (a in 1..5) { println(a) } }结果:
1
2
3
4
5
栗子2:
fun main(args: Array<String>) { for (a in 1 until 5){ println(a) } }结果:
1
2
3
4没有5!
二、函数
在Kotlin编程函数中函数是不可少的。它比Java的方法灵活和多变。
它可以独立在类和接口外,成为顶层函数,也可以嵌套使用。这是Java的方法做不到的。
2.1 主函数
主函数就是我们之前经常出现的,各个编程语言都有,基本相似。它是程序的主入口,没有它就无法开始。
fun main(args: Array<String>) {
}
比较简单的函数,它由fun 关键字、方法名mian、args变量名、ArrayString变量类型和小括号,大括号组成。
是一个简单常见的函数,它有方法名和参数,所以是有参数函数。
2.2 有参数函数
有参数的方法,也很简单,大多数和主函数差不多。但是与Java不同的就是灵活性。
fun main(args: Array<String>) {
add(b=10, a=20)
}
fun add(a: Int, b: Int) {
a + b
}你可以直接指定参数是谁的,而且顺序可以改变。但是要注意使用中,一旦前面指定了参数是谁的,后面的就要指定,否则就会报错的。

注意这里的函数都是顶层函数,它不在任何类里。
你可能感觉这没什么用,接下你可以配合给函数默认值使用
2.3 默认值函数
函数可以直接赋一个默认值,怎么使用。来看
fun main(args: Array<String>) {
add(1,2)
}
fun add(a: Int, b: Int=1) {
a + b
}这时如果你使用函数的时候,就可以先不给值。当然这个例子给了,给了就会把默认值覆盖。这样做可以防止大量的函数重载。对kotlin函数也可以重载。你说不知道上面的默认值覆盖了没有?马上就知道了。
2.4 返回值函数
在使用函数很情况,我们还需要把处理的结果拿到,这样就用到了带返回值的函数。
fun add(a: Int, b: Int = 1): Int {
return a + b
}很简单,在结束括号后加个冒号和返回值类型,然后return返回就可以了。这样你就知道这个函数的默认值会不会被覆盖了。
fun main(args: Array<String>) {
println( add(1, 2))
}
fun add(a: Int, b: Int = 1): Int {
return a + b
}结果:

覆盖了吧。有返回值函数,弄明白了,你会需要明白无返回值函数。
2.5 无返回值函数
无返回值函数,其实就是有返回值了。它返回的是Unit类型,kotlin建议你直接忽略,因为它是无意义的返回值。
fun void ():Unit{
}此时编译器会提示你省略Unit。
在Kotlin还有一种特殊意义的返回值,它只能用用函数的返回。
2.6 永远不会正常返回函数
这个函数很特殊,你基本使用不到。它用与封装框架的时候使用。
fun Null ():Nothing{
throw NullPointerException()
}
这里直接返回了一个异常。在Kotlin中函数返回异常。
2.7 表达式函数
表达式函数也是kotlin一种极间的方式。
fun add(): String {
return "add"
}
fun Add()= "Add"直接=,大大简化了简单函数的代码量。
2.8 局部函数
就是函数嵌套,在Java中的不可能的方法里写方法。
fun add() {
fun Add() = "Add"
}
2.9 匿名函数
就是没有名字的函数
fun add() {
fun () = "Add"
}
里面的函数,已经没有了名字。
今天讲的比较多希望你可一认真的看。
由于工作需要,更新可能会很慢。
边栏推荐
- js空气质量aqi雷达图分析
- [Yellow ah code] Introduction to MySQL - 3. I use select, the boss directly drives me to take the train home, and I still buy a station ticket
- 【MySQL功法】第4话 · 和kiko一起探索MySQL中的运算符
- 【NLP】Transformer理论解读
- 来n遍剑指--07. 重建二叉树
- UE4插件软链接(关联)
- 多个js雷达图同时显示
- Small application project development, jingdong mall 】 【 uni - app custom search component (below) - search history
- How on one machine (Windows) to install two MYSQL database
- I advise those juniors and juniors who have just started working: If you want to enter a big factory, you must master these core skills!Complete Learning Route!
猜你喜欢

科目三:右转弯

Come n times - 06. Print the linked list from end to end

【MySQL功法】第3话 · MySQL中常见的数据类型

多版本node的安装与切换详细操作

【MySQL中auto_increment有什么作用?】

Canvas particles change various shapes js special effects

射频电路学习之滤波电路

51单片机-----外部中断

Andoird开发--指南针(基于手机传感器)
![[MySQL exercises] Chapter 4 · Explore operators in MySQL with kiko](/img/11/66b4908ed8f253d599942f35bde96a.png)
[MySQL exercises] Chapter 4 · Explore operators in MySQL with kiko
随机推荐
(selenium)Service geckodriver unexpectedly exited. Status code was: 64
Andoird开发--指南针(基于手机传感器)
JS中原型和原型链的详细讲解(附代码示例)以及 new关键字具体做了什么的详细讲解
来n遍剑指--05. 替换空格
【MySQL功法】第2话 · 数据库与数据表的基本操作
服务器上解压文件时提示“gzip: stdin: not in gzip format,tar: Child returned status 1,tar: Error is not recovera“
JSP session的生命周期简介说明
ScheduledExecutorService - 定时周期执行任务
[转载] Virtual Studio 让系统找到需要的头文件和库
【问题记录】TypeError: eval() arg 1 must be a string, bytes or code object
js实现2020年元旦倒计时公告牌
来n遍剑指--06. 从尾到头打印链表
Scala basics [seq, set, map, tuple, WordCount, queue, parallel]
【Unity】编辑器扩展-04-拓展Scene视图
js radar chart statistical chart plugin
MySQL----多表查询
来n遍剑指--07. 重建二叉树
【TCP/IP】网络模型
ONES 入选 CFS 财经峰会「2022数字化创新引领奖」
skynet中一条消息从取出到处理完整流程(源码刨析)