条件分支
if...else
/**
* 控制语句:if,分支语句可以返回值
*/
fun controlIf(){
btn_if.setOnClickListener {
var a = 23
var b = 40
//Java中if语句
// var result :Boolean
// if (a > b){
// result = true
// }else{
// result = false
// }
// textShowControl.text = "${result}"
//Kotlin中if else 语句:if else语句可以有返回值
var result :Boolean = if(a > b) true else false
//Kotlin的类型推断功能
var result1 = if(a > b) 1 else 2
textShowControl.text = "${result} 类型推断:${result1}"
}
}
说明: 与Java中的if...else相似,不同在于Kotlin中的if...else允许分支语句返回值。Kotlin中没有三元运算符
when/else(取缔switch/calse)
/**
* 控制语句:When else,分支语句可以返回值
*/
fun controlWhen(){
var one = 2
var count = 43
btn_when.setOnClickListener {
textShowControl.text = when(count){
0 -> "是Int类型,值为0"
one,1,3,4,5,6,7,8,9 -> "是个位数"//分支语句可以是变量,多个常量使用","隔开
one * 10 -> "是整十位数"//分支语句可以是运算表达式
in 100 ..999 -> "是百位数"//分支语句可以是区间
!in 0..999 -> "百位以上的数"
else -> "不知道是几"
}
var str = textShowControl.text
textShowControl.text = "${str}"+when(textShowControl.text){
is String -> " --- 字符串类型"
else -> "不知道什么类型"
}
//textView显示结果:不知道是几 --- 字符串类型
}
}
说明:
- 关键字when 取缔 switch
- "常量值 ->" 取缔 case 常量值,常量值可以是变量、运算表达式、区间、类型判断
- else 取缔 default
- break取消,when默认一个分支处理完成就直接跳出语句了。若是常量值是多个,每个使用“,”隔开
类型判断
判断某个变量是否是某个类型:is
- is 取缔 instanceof
循环
for循环
/**
* 映射的声明初始化和遍历
*/
fun map(){
btn_map.setOnClickListener {
var map :Map<String ,String > = mapOf(Pair("你好1","嗨,你好1"),Pair("你好2","嗨,你好2"))
var str = ""
for(it in map){
//it表示的到的是键值对
str = "${str}${it.key}--${it.value}\n"
}
textShow.setText(str)
}
}
forEach循环
/**
* 使用forEach遍历集合
*/
fun setForEach(sets: Set<String>) {
btn_set_Each.setOnClickListener {
var str = ""
var index = 0
sets.forEach {
index++
str = "${str}${index} .${it}\n"
}
textShow.setText(str)
}
}
说明:it表示的是每个元素
条件循环
Kotlin中没有for(初始;条件;增减)这样的语句了,若要使用这样的语句可以采用while循环
/**
* 控制语句:While 可以代替Java中的条件for循环
*/
fun controlWhile(){
var lists: MutableList<String> = mutableListOf("v", "fdsg", "sxfdhdfvsd", "sd", "dfd")
btn_while.setOnClickListener {
var str = ""
var index = 0//初始化语句
while(index < lists.size){//判断语句
str = "${str}${index+1}--${lists.get(index)}\n"
//增减语句
index++
}
textShowControl.text = str;
}
}
跳出循环
- continue:跳出此次循环,继续下一次循环
- break:跳出此层循环
与Java类似,给多层循环加上名称,退出循环则
等式判断
结构相等
结构相等:判断变量值,也就是内存中存储的内容是否相等的,
格式:“==”
对于基本数据类型(String在Kotlin也是基本类型)而言,结构与引用都是相等的;
引用相等
引用相等:判断两个对象的内存地址值是否相同的。
格式:“===”
运算符 is 、!is、in、!in
- is/!is:判断变量是否属于某种类型
- in/!in:判断数组、容器中是否存在某个元素的
空值
Kotlin引入了空安全的概念,并在编译时开展变量是否为空的校验。相关的操作符说明如下
- 声明变量实例时,在类型名称后面加问号,表示该变量可以为空。
- 调用变量方法时,在变量名称后面加问号,表示一旦变量为空就返回null
- 新引入运算符“2:”,表示一旦变量为空,就返回该运算符右边的表达式。
- 新引入运算符“!”,通知编译器不做非空校验。如果运行时发现变量为空,就扔出异常
参考资料:《Kotlin从零到精通-Android开发》
Demo地址:https://github.com/sexyhair79/demokotlinBasics
网友评论