继续学习基础语法,在上次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基础特性深入讲解的更多相关文章

  1. Nginx概念及基础安装--详细讲解

    1.主要内容: Nginx的基础           特性           配置部署           优化(了解) 2.Nginx 是什么? Nginx是一个开源的,支持高性能,高并发的www ...

  2. linux文件系统及bash基础特性

    linux文件系统 一.根文件系统 linux被识别的第一个被称为根之间关联的文件系统叫做根文件系统(rootfs),其他分区要想被读到,需要挂载到根目录的某个挂载点(根的子目录)上.根文件系统至关重 ...

  3. python基础——特性(property)、静态方法(staticmethod)和类方法(classmethod)

    python基础--特性(property) 1 什么是特性property property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 import math class Circl ...

  4. 自学Linux Shell18.1-sed编辑器基础特性

    点击返回 自学Linux命令行与Shell脚本之路 18.1-sed编辑器基础特性 linux世界中最广泛使用的两个命令行编辑器: sed gawk 1. sed概念 sed是stream edito ...

  5. 自学Linux Shell19.1-gawk程序基础特性

    点击返回 自学Linux命令行与Shell脚本之路 19.1-gawk程序基础特性 linux世界中最广泛使用的两个命令行编辑器: sed gawk 1. gawk概念 awk是一个强大的文本分析工具 ...

  6. linux基础(2)-基础命令和基础特性

    基础命令 命令历史 命令历史的管理 登陆 shell 时,会读取命令历史文件中记录下的命令: ~/.bash_history . 登陆进 shell 后,新执行的命令只会记录在缓存中,这些命令会在用户 ...

  7. Kotlin基础篇(一)

    写在前面: 因为工作需要,目前转安卓开发,用的IDE是AS3.2版本,语言的话,用的是Kotlin.由于之前是做.NET的,没接触过这方面的东西,所以完全是小白一枚.所以想着开个博客,以此来记录自己的 ...

  8. vue总结 01基础特性

    最近有时间来总结一下vue的知识: 一.vue.js 被定义成一个开发web界面的前端库,是一个非常轻量的工具.vue.js本身具有响应式和组件化的特点. 我们不需要在维护视图和数据的统一上花费大量的 ...

  9. Java的四大基础特性

    Java的四大基础特性 一.抽象 父类为子类提供一些属性和行为,子类根据业务需求实现具体的行为. 抽象类使用abstract进行修饰,子类要实现所有的父类抽象方法否则子类也是抽象类. 二.封装 把对象 ...

随机推荐

  1. solr搜索结果转实体类对象的两种方法

    问题:就是把从solr搜索出来的结果转成我们想要的实体类对象,很常用的情景. 1.使用@Field注解 @Field这个注解放到实体类的属性[字段]中,例如下面 public class User{ ...

  2. TypeScript tsconfig.json(TypeScript配置)

    如果一个目录下存在一个tsconfig.json文件,那么意味着这个目录是TypeScript项目的根目录. tsconfig.json文件中指定了用来编译这个项目的根文件和编译选项. 一个项目可以通 ...

  3. MyBatis逆向工程生成配置 generator (生成pojo、mapper.xml、mapper.java)

    MyBatis逆向工程生成 mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java.mapper.xml ...

  4. 函数的第一类对象,f格式化,迭代器以及递归

    函数名的第一类对象及使用,f格式化以及迭代器 1.函数的第一类对象 第一类对象 --特殊点 1.可以当作值被赋值给变量 def func(): print(1) a = func a() 2.可以当作 ...

  5. 09 IO流(六)——ByteArray字节流、流对接

    字节数组流 ByteArray流是节点流. 前面讲到的文件字节流,文件字符流,他们的源都是来自于pc硬盘. 本节要讲的字节数组流的源是来自于内存或网络. 它更合适用来处理来自网络的字节流. 由于源并不 ...

  6. c语言求回文数的三种算法的描述

    c语言求回文数的三种算法的描述 题目描述 注意:(这些回文数都没有前导0) 1位的回文数有0,1,2,3,4,5,6,7,8,9 共10个: 2位的回文数有11,22,33,44,55,66,77,8 ...

  7. Python开发【第二章】:模块和运算符

    一.模块初识: Python有大量的模块,从而使得开发Python程序非常简洁.类库有包括三中: Python内部提供的模块 业内开源的模块 程序员自己开发的模块 1.Python内部提供一个 sys ...

  8. k8s安装ingress

    1. 环境准备 安装nginx-ingress-controller和backend cd /etc/yum.repos.d/mainfests 下载镜像的脚本 vi ingressnginx.sh ...

  9. idea下spring boot jpa写原生sql的时候,报Cannot resolve table错误

    错误如图 打开View→Tool Windows→Persistence选项 在弹出的Persistence窗口的项目上右键,选择Generate Persistence Mapping→By Dat ...

  10. 在论坛中出现的比较难的sql问题:32(row_number函数+子查询 sql循环取差值)

    原文:在论坛中出现的比较难的sql问题:32(row_number函数+子查询 sql循环取差值) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路. sql循环取差值,该怎 ...