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在细节上要聪明的多,极大的可以减少在运行期间抛出的异常, 所以学好它真的是挺有必要的。
Kotlin基础特性深入讲解的更多相关文章
- Nginx概念及基础安装--详细讲解
1.主要内容: Nginx的基础 特性 配置部署 优化(了解) 2.Nginx 是什么? Nginx是一个开源的,支持高性能,高并发的www ...
- linux文件系统及bash基础特性
linux文件系统 一.根文件系统 linux被识别的第一个被称为根之间关联的文件系统叫做根文件系统(rootfs),其他分区要想被读到,需要挂载到根目录的某个挂载点(根的子目录)上.根文件系统至关重 ...
- python基础——特性(property)、静态方法(staticmethod)和类方法(classmethod)
python基础--特性(property) 1 什么是特性property property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 import math class Circl ...
- 自学Linux Shell18.1-sed编辑器基础特性
点击返回 自学Linux命令行与Shell脚本之路 18.1-sed编辑器基础特性 linux世界中最广泛使用的两个命令行编辑器: sed gawk 1. sed概念 sed是stream edito ...
- 自学Linux Shell19.1-gawk程序基础特性
点击返回 自学Linux命令行与Shell脚本之路 19.1-gawk程序基础特性 linux世界中最广泛使用的两个命令行编辑器: sed gawk 1. gawk概念 awk是一个强大的文本分析工具 ...
- linux基础(2)-基础命令和基础特性
基础命令 命令历史 命令历史的管理 登陆 shell 时,会读取命令历史文件中记录下的命令: ~/.bash_history . 登陆进 shell 后,新执行的命令只会记录在缓存中,这些命令会在用户 ...
- Kotlin基础篇(一)
写在前面: 因为工作需要,目前转安卓开发,用的IDE是AS3.2版本,语言的话,用的是Kotlin.由于之前是做.NET的,没接触过这方面的东西,所以完全是小白一枚.所以想着开个博客,以此来记录自己的 ...
- vue总结 01基础特性
最近有时间来总结一下vue的知识: 一.vue.js 被定义成一个开发web界面的前端库,是一个非常轻量的工具.vue.js本身具有响应式和组件化的特点. 我们不需要在维护视图和数据的统一上花费大量的 ...
- Java的四大基础特性
Java的四大基础特性 一.抽象 父类为子类提供一些属性和行为,子类根据业务需求实现具体的行为. 抽象类使用abstract进行修饰,子类要实现所有的父类抽象方法否则子类也是抽象类. 二.封装 把对象 ...
随机推荐
- Docker之使用Docker-compose搭建LNMP环境
之前有随笔介绍使用Docker-compose搭建LNMP环境(centos6 php5.6) https://www.cnblogs.com/minseo/p/10146982.html 本文介绍D ...
- shell每隔一秒钟就记录下netstat状态
说明 木马可能类似随机发送心跳包的操作,随机sleep.对这类情况写好了一个监听shell脚本,每隔一秒钟就记录下netstat状态. 代码 #!/bin/bash #功能:用于定时执行lsof 和 ...
- Eureka客户端源码流程梳理
前面梳理了Eureka服务端的流程,现在整理下客户端的流程. 1.在这个包(spring-cloud-netflix-eureka-client)里面寻找客户端启动入口相关配置,关键配置文件sprin ...
- C#本地修改器
C#本地修改器 C# 制作外挂常用的API C#做外挂的常用API,本人用了很久,基本没发现问题 using System; using System.Collections.Generic; usi ...
- mysql 严格模式 Strict Mode
mysql 严格模式 Strict Mode 找到MySQL安装目录下的my.cnf(windows系统则是my.ini)文件 在sql_mode中加入STRICT_TRANS_TABLES则表示开启 ...
- 使用qt creator来编译 调试 用CMakeLists组织的工程
爱情原如树叶一样,在人忽视里绿了,在忍耐里露出蓓蕾. -- 何其芳 使用CMake作为构建系统,需要自己写 ...
- web框架解析
一.白手起家 要想模拟出web请求响应的流程,先想想平时我们是怎么上网浏览网页的?首先打开浏览器,然后在地址栏中输入我们想要访问的页面,紧接着按下回车键Enter,最后跳转至目标页面(当然我们也会出现 ...
- vue设置input不可编辑切换
html: <Input name="a" v-model="formValidate.coName" placeholder="请输入姓名&q ...
- pyrhon 第一个小购物车例子
product_list=[[],[],[],[]] shopping_list=[] salary = input("请输入你的工资:") if salary.isdigit() ...
- UnknownError: session deleted because of page crash from tab crashed
一.问题 在docker上跑Selenium+ChromeDriver+Chrome无头模式报错: UnknownError: unknown error: session deleted becau ...