• Kotlin学习快速入门(2)——条件 数组 循环 方法


    条件

    if条件判断

    常用的判断和Java一样,这里提一下不同的用法

    1.if可以作为三元运算符

    val max = if (a > b) a else b
    

    2.使用in判断是否在某个区间

    val x = 1
    //相当于条件 1<= x <=8
    if(x in 1..8){
    	println("在区间内")
    }
    //与上面的条件相反
    if(x !in 1..8){
    	...
    }
    

    3.is关键字类型转换

    相当于Java中instanceof关键字
    使用了is,kotlin已经自动完成了类型转换

    val text = "hello"
    if(text is String){
    	...
    }
    

    when(swich分支)

    1.字符串分支

    val result = ""
    when(result){
        "OK","SUCCESS" -> print("成功")
        "Falied" -> {
            一系列操作...
        }
        else ->{
            一系列操作...
        }
    }
    

    2.数值分支

    val num = 2
    when(num){
    	in 1..10 -> println("num在1和10之间")
    	11,12 -> println("num为11或12")
    }
    

    3.表达式使用

    //hasPrefix方法返回true或fasle
    fun hasPrefix(x: Any) = when(x) {
        is String -> x.startsWith("prefix")
        else -> false
    }
    

    4.不带参数

    //里面的分支条件是布尔表达式
    when {
        x.isOdd() -> print("x is odd")
        x.isEven() -> print("x is even")
        else -> print("x is funny")
    }
    

    数组

    kotlin中数组用Array类实现,使用arrayOf方法或者是Array()的构造方法创建数组

    //Int数组 [1,2,3]
    val a = arrayOf(1, 2, 3)
    
    //String数组 ["he","you"]
    val a = arrayOf("he","you")
    
    //工厂方法,["he0","he1],"he2"]
    val array = Array(3, { i -> ("he" + i) })
    
    //还可以传对象
    val a = arrayOf(student1,student2)
    

    除了类Array,还有ByteArray, ShortArray, IntArray,用来表示各个类型的数组,省去了装箱操作,因此效率更高,其用法同Array一样。

    循环

    while循环与java一样,这里不多说

    普通for循环

    
    //0-4循环(包括0和4) 打印01234
    for(i in 0..4){
    	println(i)
    }
    
    //反序 4-1 两边都包括 打印4321
    for (i in 4 downTo 1){
    	print(i)
    }
    
    //[0-4),不包括4 打印0123
    for (i in 0 until 4) { 
         println(i)
    }
    
    //结果为13(步长为2,相当于每次循环i=i+2)
    for(i in 1..4 step 2){
    	println(i)
    }
    

    数组遍历

    //collection数组,list,String等可迭代的对象
    for (item in collection){
    	print(item)	
    }
    
    //it就是数组中的一个元素
    array.forEach { 
            println(it) 
    }
    
    //indices是数组的区间(0-length-1)
    for (i in array.indices) {
        print(array[i])
    }
    
    //得到下标和数值
    for ((index, value) in array.withIndex()) {
        println("the element at $index is $value")
    }
    

    方法

    无返回值

    //Unit相当于Void,可以省略不写
    fun sayHello(): Unit{
        println("hello world")
    }
    
    fun sayHello(){
        println("hello world")
    }
    

    带返回值

    fun sayHello(): String{
        return "hello world"
    }
    
    //如果方法是作为表达式,则可以省略声明方法返回的类型
    fun sayHello() = "hello"
    
    // public方法则必须明确写出返回类型
    public fun sum(a: Int, b: Int): Int = a + b   
    

    带参数

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

    可变参数

    可变参数使用vararg关键字修饰

    fun vars(vararg v:Int){
        for(vt in v){
            print(vt)
        }
    }
    
  • 相关阅读:
    LeetCode "Super Ugly Number" !
    LeetCode "Count of Smaller Number After Self"
    LeetCode "Binary Tree Vertical Order"
    LeetCode "Sparse Matrix Multiplication"
    LeetCode "Minimum Height Tree" !!
    HackerRank "The Indian Job"
    HackerRank "Poisonous Plants"
    HackerRank "Kundu and Tree" !!
    LeetCode "Best Time to Buy and Sell Stock with Cooldown" !
    HackerRank "AND xor OR"
  • 原文地址:https://www.cnblogs.com/stars-one/p/11251441.html
Copyright © 2020-2023  润新知