这篇主要讲的是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<String>) {
//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,")
}
}
附上运行的结果:
这篇就是这些了,如有不足,欢迎指出,觉得我会改,你就输了....
网友评论