4.RangeTo与面向对象的Kotlin

1.rangeTo的约定

..语法,例如:1..10代表所有1到10的数字。..运算符是调用rangeTo函数的一个简洁方法。

  • 示例代码

fun main(args: Array) {
    val a = 5
    val b = 10

    if (a in 2..b) {
        println("in the range")
    }

    if (a !in 2..b) {
        println("out of the range")
    }

    println("-----------")


    for (i in 2..10) {
        println(i)
    }

    println("------")


    for (i in 2.rangeTo(10)) {
        println(i)
    }

    println("---------")

    for (i in 2..10 step 2) {
        println(i)
    }

    println("-------")

    for (i in 10 downTo 2 step 4) {
        println(i)
    }
}
  • 输出结果
in the range
-----------
2
3
4
5
6
7
8
9
10
------
2
3
4
5
6
7
8
9
10
---------
2
4
6
8
10
-------
10
6
2

示例代码

fun main(args: Array) {
    var i = 4

    if (i in 1..5) {
        println(i)
    }

    println("---------")

    for (a in 1..4) {
        println(a)
    }

    println("---------")

    for (a in 4..1) {
        println(a)
    }

    println("-----------")

    for (a in 4 downTo 1) {
        println(a)
    }

    println("----------")

    for (a in 1..6 step 2) {
        println(a)
    }

    println("---------")

    for (a in 6 downTo 1 step 2) {
        println(a)
    }

    println("---------")

    for (a in 1 until 6) {
        println(a)
    }
}

输出

4
---------
1
2
3
4
---------
-----------
4
3
2
1
----------
1
3
5
---------
6
4
2
---------
1
2
3
4
5

2.字符串数组遍历

  • 示例代码
fun main(args: Array) {
    var array = listOf("hello", "world", "hello world", "welcome", "goodbye")

    for (item in array) {
        println(item)
    }

    println("--------")

    when {
        "world" in array -> println("world in collection")
    }

    println("----------")

    array.filter { it.length > 5 }.map { it.toUpperCase() }.sorted().forEach { println(it) }

}

  • 输出结果
hello
world
hello world
welcome
goodbye
--------
world in collection
----------
GOODBYE
HELLO WORLD
WELCOME

3.多行三重引号的字符串

三重引号字符串的目的,不仅在于避免转义字符字符,而且使它可以包含任何字符,包括换行符。

  • 示例代码
fun main(args: Array) {
    var array = listOf("hello", "world", "hello world", "welcome", "goodbye")

    for (item in array) {
        println(item)
    }

    println("--------")

    when {
        "world" in array -> println("world in collection")
    }

    println("----------")

    array.filter { it.length > 5 }.map { it.toUpperCase() }.sorted().forEach { println(it) }

}
  • 输出结果
hello \n world
hello
        \n world
        welcome
        

4.面向对象的Kotlin

1)在Kotlin中,一个类的可以有一个primary构造方法以及一个或者多个secondary构造方法。
2)primary构造方法是类头(Class header)的一部分,它位于类名后面,可以拥有若干参数。
3)如果primary构造方法没有任何注解或者可见性关键字修饰,那么constructor关键字可省略。

  • 示例代码
package com.leofight.kotlin

class EmptyClass

class MyClass constructor(username: String) {
    init {
        println(username)
    }

    private val username: String = username.toUpperCase()
}

fun main(args: Array) {
    var myClass = MyClass("zhangsan")
}
  • 运行结果
zhangsan

你可能感兴趣的:(4.RangeTo与面向对象的Kotlin)