美文网首页
变量和函数

变量和函数

作者: SScience | 来源:发表于2017-08-16 18:45 被阅读8次
    • 可以使用下划线来增强可读性(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<String> = arrayOf("Clock", "D_clock", "技术视界")
      var studentNums = arrayOf(1, 2, 3)
      使用arrayOfNulls可以创建一个指定长度,元素内容为空的数组
      
      //创一个长度为10,元素内容皆为null的数组
      var emptyArray = arrayOfNulls<String>(10)
      

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

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

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

      //使用闭包初始化一个Array<String>,数组内容为["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<String>) {
         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<String> = 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//直接中断标签指定的整个循环
                  }
              }
          }
      }
      

    相关文章

      网友评论

          本文标题:变量和函数

          本文链接:https://www.haomeiwen.com/subject/yyhirxtx.html