[kotlin] range的用法,list的用法,面向对象特性1

结合上篇文章,kotlin里面的range使用..来表示,java中的range一般是前闭后开,kotlin中的则不一样,2..8是表示2到8,也包含8,首先我们看个例子

    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("------")

    //10-2 步进4
    for (i in 10 downTo 2 step 4) {
        println(i)
    }

第一个跟第二循环表示的意思相同,第三个通过step来进行步进,第四个则是反过来步进,很直观

java8中stream操作一个数组很方便,那么在kotlin中是什么样的呢,我们看如下例子

fun main(args: Array<String>) {
    var array = listOf<String>("hello", "world", "hello world", "welcome", "bye")

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

    println("------")

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

    //找出长度超过5 字符串大写,默认字符排序,打印控制台 awsome
    array
            .filter { it.length > 5 }
            .map { it.toUpperCase() }
            .sorted().forEach { println(it) }
}
1.找出集合里面的world 使用when表达式 替代了传统的if,这个跟之前的when的使用又不一样
2.实现的流的操作,比之java8的语法更加优雅, it代表lambda表达式的入参

最后一个例子是写class的,跟java中做对比

class EmptyClass

如果往class前面添加public也是可以的,但是编辑器提醒public是多余的,说明默认class就是public的,加不加都可以,其次java中要求public class 类名跟文件名保持一致,在kotlin中没有这样的规定,如果类中什么也没有,可以不带花括号
在看下面

class MyClass constructor(userName : String){
    private val userName: String = userName.toUpperCase()

    init {
        println(userName)
    }
}

fun main(args: Array<String>) {
    val myClass: MyClass = MyClass("zhangsan")
}

1.在kotlin中,一个类可以有个primary构造方法以及一个或者多个secondary构造方法
2.primary构造方法是类头(class head) 的一部分,它位于类名后面,可以拥有若干参数
3.如果primary构造方法没有任何注解或者可见性关节字修饰,那么constructor关键字可以省略
4.初始化MyClass,省略了new关键字
上面的例子可以看到init代码块其实就是类似之前java构造方法的逻辑,这里构造方法,跟初始化构造方法逻辑做了拆分,构造方法要么用于初始化成员变量,要么用于init代码块逻辑,如上面例子,上面例子运行结果
zhangsan

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值