Kotlin基础特性深入讲解
继续学习基础语法,在上次https://www.cnblogs.com/webor2006/p/11183077.html中定义了一个两数相加的函数,如下:
其实对于这个函数还可以进一步简写,因为函数体就一句话,如下:
那如果函数不返回值呢,看下面的例子:
其实Unit是可以省略掉的,IDE中也已经将它标灰了,如下:
那,这个Unit是干嘛用的呢?之后再学习,先不管这个细节。如果说想输出“a+b=5”这个形式的字串那该怎么来弄呢,叫Java的风格应该是这么写的:
但在Kotlin中可以采用“字符串模板”来实现,如下:
包名:
我们知道在Java中的包名是跟碰盘上的文件目录名是完全匹配的,但是在Kotlin中不是这样的,它的package是一种逻辑上的,不需要跟磁盘上的目录一样,比如说目前咱们的包名是:
变量【val】及常量【var】:
首先来定义一个常量:
这就定义了一个int类型的常量a,如果对它进行赋值肯定就会报错了:
或者可以通常类型推断机制来更精简的声明一个常量,如下:
对于集合常量其实跟Java一样,是常量地址不能变,但是里面的元素是可以变的,如下:
接着再来定义一个变量:
注释:
跟Java的注释类似,但是跟Java有一个区别就是注释里面可以进行嵌套的,如下:
Byte赋值给Int:
在Java中一个byte是可以赋值给int的,但是在Kotlin是绝对不允许小范围的类型赋值给大范围的类型,在Kotlin中要求赋值的类型必须一模一样,比如:
要如何解决这个错误呢,就是手动转一下既可,如下:
引用其它包的文件:
对于Java来说如果一个类想引用另一个包名的类则需要使用import将包名导进来,而在Kotlin中其实类似,不过有它独特的地方,下面来演示一下,先新建一个计算类,呆会会被其它包中的函数都调用的,如下:
接下来咱们要在HelloKotlin2中来使用它,也得使用import,如下:
另外还有一种取别名的方式,如下:
流程控制:
其实还可以更加简单,也是Koltin独有的:
那如果条件语句中可能有多行,那还能用上面的这种方式么?当然是可以的,最终结果就是语句最后一行写的值,具体如下:
字符串转换成整数,体现Kotlin安全性:
将字符串转换成整数在实际工作中是非常常见的需求,有可能字符串并非是纯数字,所以可能会转换失败,另外也有可能会发生空指针异常,下面来看一下Kotlin针对这种场景的处理有啥优势,如下:
此时如果要想让程序不报错,需要在返回值上加上它:
好,接下来调用一下:
接下来再编写一个相乘的函数:
接下来再来一个新函数,需要说明一个问题:
调用并运行:
好,一切都很好理解,但是!!如果这样直接写就会报错了:
说明啥?说明对于一个可能为null的值不做判空直接使用在Kotlin中是在编译期间就给出异常提示从而在运行时可以规避空指针的问题,那为啥下面这样写就不报错呢?
这是因为执行到这句话,Kotlin能知道atInt和b2Int一定是整数不可能为null,所以可以直接这样写了,从这个细节就可以看到Kotlin这门语言确实是比Java在细节上要聪明的多,极大的可以减少在运行期间抛出的异常, 所以学好它真的是挺有必要的。