Kotlin 笔记 纯属娱乐萌新大佬绕道

本文深入探讨了Kotlin中的循环结构,包括for循环的不同写法及其应用,如遍历数组、字符串及特定范围的数值。同时,详细解析了when条件语句的多种使用场景,如基于值的条件判断、类型检查以及与集合操作的结合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

 

 ///-----------------------for循环写法大全

        //for循环 >=0 <1   特别注意区分大小写
        for (j in 0 until 1) {
            print("i => $j \t")
        }
        //可增可减 <=12 >=10
        for (i in 12 downTo 10){

        }
        //>=20 <=25
        for (i in 20 .. 25){
            print("i => $i \t")
        }

        // 从10到16 每次跳跃2个
        for (i in 10 until 16 step 2){
            print("i => $i \t")
        }

        //nb 遍历字符串
        for (i in "abcdefg"){
            print("i => $i \t")
        }
        //输出 i => a  i => b  i => c  i => d  i => e  i => f  i => g

        // 数组遍历方式第一种类
        var arrayListTwo = arrayOf(1,3,5,7,9)
        for ((index,value) in arrayListTwo.withIndex()){
            println("index => $index \t value => $value")
        }
     /*   打印输出
         index => 0   value => 1
        index => 1   value => 3
        index => 2   value => 5
        index => 3   value => 7
        index => 4   value => 9*/

        //多元素更新
        var arrayListThree = arrayOf(2,'a',3,false,9)
        var iterator: Iterator<Any> = arrayListThree.iterator()
        while (iterator.hasNext()) {
            println(iterator.next())
        }
//        输出结果
        /*
        2
        a
        3
        false
        9
        */

        //-----------------------when条件语句

        

//强的一批
 when (5) {
     1 -> {
         println("1")
     }
     2 -> println("2")
     3 -> println("3")
     5 -> {
         println("5")
     }
     else -> {
         println("0")
     }
 }
 //变种写法
 when (1) {
     // 即x = 1,2,3时都输出1。
     1, 2, 3 -> {
         println("1")
     }
     5 -> {
         println("5")
     }
     else -> {
         println("0")
     }
 }
 //变种写法2
 var num: Int = 5
 when (num > 5) {
     true -> {
         println("num > 5")
     }
     false -> {
         println("num < 5")
     }
     else -> {
         println("num = 5")
     }
 }

 // 检查值是否存在于集合或数组中
 //操作符:
 //(in) 在
 //(!in) 不在
 //限定:只适用于数值类型
 var arrayList = arrayOf(1, 2, 3, 4, 5)
 when (1) {
     in arrayList.toIntArray() -> {
         println("1 存在于 arrayList数组中")
     }
     in 0..10 -> println("1 属于于 0~10 中")
     !in 5..10 -> println("1 不属于 5~10 中")
     else -> {
         println("都错了 哈哈!")
     }
 }
 /*3.5、检查值是否为指定类型的值

 操作符
 是(is)
 不是(!is)
 值得注意的是,Kotlin的智能转换可以访问类型的方法和属性
 例:*/
 when ("abc") {
     is String -> println("abc是一个字符串")
     else -> {
         println("abc不是一个字符串")
     }
 }

// 智能转换
 var a: Int = 2
 when (a) {
     !is Int -> {
         println("$a 不是一个Int类型的值")
     }
     else -> {
         a = a.shl(2)
         println("a => $a")
     }
 }

/* 输出结果为:

 abc是一个字符串
 a => 8*/

操作符

加减操作符

区间操作符:即是符号..。值得注意的是这个操作符在Java中是不存在的,且两个操作数都是整型 如下图

// 常量注意事项:

val 它只能是一个不能修改的变量 ,常量定义const val 

注意:其特点:const只能修饰val,不能修饰var

数据类型

  • 两个数值的比较

判断两个数值是否相等(==),判断两个数值在内存中的地址是否相等(===) 

空类型安全

 

1.2.5、let操作符(贼六)

  • let操作符的作用:当时用符号?.验证的时候忽略掉null
  • let的用法:变量?.let{ ... }

例:排除掉数组中的空元素

val arrTest : Array<Int?> = arrayOf(1,2,null,3,null,5,6,null)

// 传统写法
for (index in arrTest) {
    if (index == null){
        continue
    }
    println("index => $index")
}

// let写法
for (index in arrTest) {
    index?.let { println("index => $it") }
}

输出结果为:

index => 1
index => 2
index => 3
index => 5
index => 6

 

Evils操作符

Evils其实不是一个操作符,而是evil的复数,而evil的意思在这里可以理解为屏蔽、安全的操作符,这样的操作符有三种:

  1. ?: 这个操作符表示在判断一个可空类型时,会返回一个我们自己设定好的默认值.
  2. !! 这个操作符表示在判断一个可空类型时,会显示的抛出空引用异常(NullPointException).
  3. as? 这个操作符表示为安全的类型转换. 强转, 可能出现异常加入 ?即可解决

String 操作符

下列几个函数都是处理字符串为空串或为空的:

  • isEmpty() : 其源码是判断其length是等于0,若等于0则返回true,反之返回false。不能直接用于可空的字符串
  • isNotEmpty() : 其源码是判断其length是否大于0,若大于0则返回true,反之返回false。不能直接用于可空的字符串
  • isNullOrEmpty() : 其源码是判断该字符串是否为null或者其length是否等于0
  • isBlank() : 其源码是判断其length是否等于0,或者判断其包含的空格数是否等于当前的length。不能直接用于可空的字符串
  • isNotBlank() : 其源码是对isBlank()函数取反。不能直接用于可空的字符串
  • isNotOrBlank() : 其源码判断该字符串是否为null。或者调用isBlank()函数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值