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进行修饰,子类要实现所有的父类抽象方法否则子类也是抽象类. 二.封装 把对象 ...
随机推荐
- 详解consul的安装和配置
Consul 简化了分布式环境中的服务的注册和发现流程,通过 HTTP 或者 DNS 接口发现.支持外部 SaaS 提供者等. consul提供的一些关键特性: service discovery:c ...
- C++STL位标志、智能指针与异常处理
参考<21天学通C++>第25章节,对STL位标志进行介绍.就是当需要不是像char int long 等整个字节数的数据表示形式,而是使用二进制位表示的时候,通常使用这里讲到的位标志.从 ...
- nightwatch对前端做自动化测试
记录node环境使用nightwatch.selenium-server.chromedriver对部署后的前端页面进行自动化测试的项目搭建过程. 1.目标 能对部署后的前端项目进行自动化测试,能自动 ...
- 030 Android 第三方开源下拉框:NiceSpinner的使用+自定义Button样式+shape绘制控件背景图+图片选择器(selector)
1.NiceSpinner下拉框控件介绍 Android原生的下拉框Spinner基本上可以满足Android开发对于下拉选项的设计需求,但现在越来越流行的下拉框不满足于Android原生提供的下拉框 ...
- java当中JDBC当中的transaction例子
[学习笔记] 7.jdbc的transaction例子: import java.sql.*; public class MySQlTransaction1 { public static void ...
- 最佳thread数量
cpu 密集性task,过多的线程反而降低了处理效率,最佳的做法就是保持和cpu core数量大致相同的线程数量: threads = number of CPUs + 1 io密集型,因为会有cpu ...
- Python之特征工程-3
一.什么是特征工程?其实也是数据处理的一种方式,和前面的原始数据不一样的是,我们在原始数据的基础上面,通过提取有效特征,来预测目标值.而想要更好的去得出结果,包括前面使用的数据处理中数据特征提取,新增 ...
- 3.asp.net core 关键概念
1. StartUp类 在Startup.ConfigureServices方法里配置或注册服务 在Startup.Configure方法里配置请求处理管道.请求处理管道由一系列中间件组建构成,每个中 ...
- 用 Scoop 管理你的 Windows 软件
包管理系统,Homebrew 就是 macOS 上体验最佳的软件包管理,能帮助我们方便快捷.干净利落的管理软件.在Windows平台上也有一个非常棒的包管理软件--Scoop.Scoop 最适合安装那 ...
- Spark机器学习基础-特征工程
对连续值处理 0.binarizer/二值化 from __future__ import print_function from pyspark.sql import SparkSession fr ...