Android开发kotlin学习(二)

这篇主要讲的是kotlin里面的空安全和区间的部分

1.kotlin的空安全

为啥子说kotlin是空安全的?和Java相比,kotlin的空安全可以带来哪些便利之处?不啰嗦,直接上代码:

总的有个比较的对吧,那就这样:写一个方法,返回年龄,类型String,并且调用

Java写法:


这里返回空,没为题,那么调用的时候有问题吗?
也没问题,那么跑起来的时候啥问题应该都知道了吧...

看看再kotlin中会怎么样:


在你写代码的时候,明确的和你说,这里不能是空的!想运行?门都没有啊......那怎么样才能通过呢?

①.明确的返回不为空的数据

这样是没问题的

②.明确的告诉编译器,这里返回的是可空类型

这样也是可以通过的

这里就是kotlin的空安全,在kotlin中,在代码的编辑阶段,编译器就会帮你检查对象为空的可能,这时候,要么你要明确的返回一个不为空的数据/对象,要么,你就要告诉编译器我知道这里为空,你可以给我返回,我自己做处理.这是后你可能会疑问了,你加了问好之后,可以返回空了,那不就还是空不安全的吗?那咱们再往后看:

方法你是写好了,需要调用了,Java的方法不用看,一定是可以调用的,咱们看看当咱们加上?,让方法可以返回空的时候,在你调用的地方会怎么样:


又给指出来了,这里是可能为空的,需要咱们做处理,这里咱们在加个问好,运行时可以的吗?
没问题,当然可以,在kotlin中,只要你判断了空,那么有值就返回值,没有就打印null,这样可以给咱们带来什么好处吗?有~~,看下面完整的代码

Java写法:


image.png

kotlin写法:



emmmm....应该很一目了然了,kotlin的空安全可以为我们省去很多的 if(xxx == null) 的判断,可以简化代码.

还有下面种情况,我定义个可空的常量,但是给他赋值不是空的,在我明确知道他不是空的情况下,kotlin里面还是会有空检查机制,在你调用的时候让你需要判断:

这时候有什么处理办法呢?还是两种:

2.区间Rang

区间这个很简单,和我们数学里面的开区间,闭区间相似,直接上代码,解释和注意事项都在代码中

/**
 * 区间
 *
 * */

val mRange : IntRange = 0..100  //表示0-100的闭区间   等价于[0,100]
val mRange2 : IntRange = 0 until 50  //表示0-100的半闭区间  等价于[0,50)等价于[0,49]
val mRange3 : IntRange = 10..1

//Range是ClosedRangede 子类

//Range里面包含的方法   1.isEmpty  2.contains
fun main(args: Array) {
    //1.mRange3是空的吗
    println(mRange3.isEmpty())    //true
    //2.mRange区间里面包含50吗
    println(mRange.contains(50))  //true
    //50在 mRange 区间里面吗
    println(50 in mRange)         //true
    //mRange2 包含50吗
    println(mRange2.contains(50))  //false

    //遍历
    for (i in mRange2){
        print("$i,")
    }
}

附上运行的结果:


这篇就是这些了,如有不足,欢迎指出,觉得我会改,你就输了....


你可能感兴趣的:(Android开发kotlin学习(二))