变量和函数

  • 可以使用下划线来增强可读性(Kotlin1.1版本开始支持)

    val oneMillion = 1_000_000
    val creditCardNumber = 1234_5678_9012_3456L
    val socialSecurityNumber = 999_99_9999L
    val hexBytes = 0xFF_EC_DE_5E
    val bytes = 0b11010010_01101001_10010100_10010010
    
  • 数组
    关键字Array,创建数组,使用arrayOf:

    //使用arrayOf简单创建数组
    var students: Array = arrayOf("Clock", "D_clock", "技术视界")
    var studentNums = arrayOf(1, 2, 3)
    使用arrayOfNulls可以创建一个指定长度,元素内容为空的数组
    
    //创一个长度为10,元素内容皆为null的数组
    var emptyArray = arrayOfNulls(10)
    

    Kotlin对一些基础类型定义数组会有拆装箱的开销,所以也可以使用自身封装好的一些API进行创建数组,以降低开销:

    //创建一个int数组,避免封箱装箱操作
    var intArray = intArrayOf(1, 2, 3)
    

    Kotlin数组还支持使用闭包进行初始化,就像下面这样:

    //使用闭包初始化一个Array,数组内容为["0", "1", "4", "9", "16"]
    var asc = Array(5, { i -> (i * i).toString() })
    
  • 字符串
    关键字String:

    var useString: String = "I am a boy"
    var firstChar: Char = useString[0] //相当于Java的String.charAt(0)
    

    Kotlin的同样支持字符串模板,但是相比Java的String.format要简洁很多。比如:

    var nickname: String = "D_clock爱吃葱花"
    println("my nickname is $nickname")//输出昵称
    println("nickname length: ${nickname.length}")//输出昵称的长度
    
  • 定义函数
    Kotlin定义一个函数的风格大致如下

    访问控制符 fun 方法名(参数,参数,参数) : 返回值类型{
     ...
     ...
    }
    
    • 访问控制符:与Java有点差异,Kotlin的访问范围从大到小分别是public、internal、protected、private,不声明默认是public;
    • 返回值类型:不需要返回类型的函数,后面的: 返回值类型可以缺省(这里可以看到无论是变量还是方法,Kotlin都喜欢名字在前,类型在后);

    Kotlin支持包级函数,即函数不依赖于类而存在:

    package lesson1
    fun main(args: Array) {
       println("Kotlin")
    }
    
  • 参数变长
    Kotlin的参数变长,传递的参数使用关键字vararg标明即可

    /***Kotlin版代码***/
    fun displayActors(vararg name: String) {
        println("actors: " + name);
    }
    /***Java版代码***/
    public void displayActors(String... name) {
        System.out.println("actors :" + name);
    }
    
  • 静态变量和函数
    Kotlin没有Java中的static概念,如果在Kotlin中需要像Java一样定义静态变量和函数可以使用companion object,companion object后可以加上自定义的object名,也可以省略。

    // 定义
    class KotlinStatic {
       companion object Test {
           var kotlinInt: Int = 0
           fun getInstance(): KotlinStatic {
               return KotlinStatic()
           }
        }
    }
    // 使用
    KotlinStatic.kotlinInt
    KotlinStatic.getInstance()
    

    在Kotlin中,如果真的想要实现和Java中的static变量或函数,官方更推荐使用包级别的变量或函数来实现。

  • For循环
    for循环能够对任何提供迭代器(iterator)的对象进行遍历

    fun useFor() {
       val students: Array = arrayOf("java", "kotlin", "go")
       for (student in students) {//输出学生名字
           println("student: $student")
       }
       for ((index, student) in students.withIndex()) {//输出学生的下标和名字
           println("the element at $index is $student")
       }
    }
    
  • 返回和跳转
    continue、break、return三种跳转都支持跳转到指定的标签处,使用@在对应的循环或者匿名函数做标记即可:

    fun useJump() {
        val numbers = arrayOf(1, 2, 3, 4, 5)
        val numbers2 = arrayOf(1, 3, 5, 7, 9)
        //设置testLab标签名
        testLab@ for (num in numbers) {
            println("num: $num")
            for (num2 in numbers2) {
                if (num == 3) {
                   break@testLab//直接中断标签指定的整个循环
                }
            }
        }
    }
    

你可能感兴趣的:(变量和函数)