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进行修饰,子类要实现所有的父类抽象方法否则子类也是抽象类. 二.封装 把对象 ...
随机推荐
- java设计模式(一)——单例模式
1.基本介绍 单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供-一个取得其对象实例的方法(静态方法).如:一般情况下,数据库的连接 2.创建方式: ...
- [学习笔记] 下载、安装、启动 Eclipse(OEPE)
OEPE 的全称是: Oracle Enterprise Pack for Eclipse 截止目前的最新版本是:(12.2.1.9) 下载地址:(需要在甲骨文官网注册一个账户才能下载) https: ...
- 漏洞复现之Redis-rce
通过主从复制 GetShell Redis主从复制 Redis是一个使用ANSI C编写的开源.支持网络.基于内存.可选持久性的键值对存储数据库.但如果当把数据存储在单个Redis的实例中,当读写体量 ...
- C++ 生成 voronoi 图 & C++生成泰森多边形图形
1. 功能 生成voronoi图的一个类 2. 代码 VoronoiDiagramGenerator.h #pragma once //Microsoft Visual Studio 2015 Ent ...
- go语言的3个包——strconv、os.Args、flag
1. strconv包: 2. os.Args: 获取运行程序时给出的参数,可以通过os包来实现.看代码: package main import ( "fmt" "os ...
- (转)FFMPEG类库打开流媒体的方法(需要传参数的时候)
本文链接:https://blog.csdn.net/leixiaohua1020/article/details/14215393 使用ffmpeg类库进行开发的时候,打开流媒体(或本地文件)的函数 ...
- 数据库去空格 去table 去回车符号 去重
1 update bd_prod_cate c set c.cate_name = replace(c.cate_name,chr(9),'')//去掉tab符号的 2 update bd_prod_ ...
- 将图片画到canvas 上的几种方法(转)
转自:https://blog.csdn.net/qq_15009739/article/details/82809525
- flume-ng version出现错误Error: Could not find or load main class org.apache.flume.tools.GetJavaPrope的解决办法
错误: 找不到或无法加载主类 org.apache.flume.tools.GetJavaProperty或者Error: Could not find or load main class org. ...
- DO、VO、DTO 区别
DTO:数据传输对象,主要用于外部接口参数传递封装,接口与接口进行传递使用. VO:视图对象,主要用于给前端返回页面参数使用. DO:数据对象,主要用于数据库层传递. DTO转DO:接口接收参数将参数 ...