kotlin字符串比较&空值处理&when表达式
字符串比较:
字符串的比较也是实际中比较常见的,下面来看下它的比较跟java中有啥不同,下面走起!
如我们所预期,其结果:
下面再来:
如果是java,结果肯定是为false,因为"=="是比较的是地址,但是!!见证奇迹:
所以在kotlin中的字符串的==其实跟equals效果一样,下面改成equals:
结果就不打印了,肯定是true。下面再来换成英文试试:
这个没啥好说的,下面再来改:
也好理解,但是!!如果想不区分大小写,在kotlin中是如何写的呢?
看结果:
也就是说在kotlin中对equals方法进行了重载,点击源码看下该重载的方法:
空值处理:
对于空值的处理在实际编码中也是非常重要的,所以看下在kotlin中是如何对它进行处理的:
编译运行:
接着来传一个null值试一下:
看一下提示是:
呃~~也就是说!
这点比java要强呀,在实际项目中上线之后出现空指针异常比比皆是,基本上每个程序员都无一幸免,但是想一下,有了kotlin这种机制直接就把空指针的可能性在编译期就可扼杀了,是不是kotlin要比java人性呢?哈哈,先不过多对新语言做评论,因为还是小白还木有发言权,回到正题,那如果要能将参数支持传null该如何处理呢?
好奇怪的语法,这时立马报错信息就没了,下面运行看下结果 :
所以在刚才查看equals源码,也能看到它的身影:
when表达式:
直接上代码来理解,先不对它做过多解释:
看输出结果:
其实跟java中的swich功能一样,但是!!!是不是觉得kotlin写起来更加清爽!!
下面用这个表达式来改造一下之前写过的DEMO,如博客:http://www.cnblogs.com/webor2006/p/7684357.html,其中有个写日志的DEMO:
其对应的代码如下:
这时对它进行一下升级,给其中的数字全转换成中文:
那正好可以用这个when表达式来改写,如下:
编译运行:
kotlin字符串比较&空值处理&when表达式的更多相关文章
- [Swift通天遁地]五、高级扩展-(14)扩展String快速计算字符串中的各种数学表达式
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Kotlin入门(8)空值的判断与处理
上一篇文章介绍了如何对循环语句进行操作,末尾还演示了发现空串时直接继续下一循环,只是在初始化字符串数组时使用了“val poem2Array:Array<String?> = ***”,该 ...
- Kotlin语法(函数和lambda表达式)
三.函数和lambda表达式 1. 函数声明 fun double(x: Int): Int { } 函数参数是用 Pascal 符号定义的 name:type.参数之间用逗号隔开,每个参数必须指明类 ...
- python学习:注释、获取用户输入、字符串拼接、运算符、表达式
注释 #为单行注释'''三个单引号(或者"""三个双引号)为多行注释,例如'''被注释的内容''' '''三个单引号还可以起到多行打印的功能. #ctrl+? 选中的多行 ...
- kotlin字符串模板&条件控制
字符串模版: 小时候都有要求记日记的习惯,下面是一小学生记的日记: 很漂亮的流水账,那细分析一下这些文件其实大体都类似,只有几个不同点: 其实就是地点变了,那对于这种有规律的文字可以采用kotlin的 ...
- kotlin字符串和数字之间的转换和人机交互
继续基础学习~ 字符串和数字之间的转换 那如何转换呢,其实很简单: 编译木有报错,但是运行: 所以这里了解下. 人机交互 看这标题貌似高端的,其实也就是程序可以接受键盘的输入啦,下面开始: 首先提示用 ...
- 递推,动态规划(DP),字符串处理,最佳加法表达式
看了一些资料,竟然发现连百度文库也有错误的地方,在这里吐槽一下题目大意:http://wenku.baidu.com/link?url=DrUNNm19IqpPNZjKPX4Jg6shJiK_Nho6 ...
- String字符串排序1.8 lamda表达式以及1.7自定义排序
// 1.8 public class text { public static void main(String[] args) { String s1 = "哈哈哈11,呵呵呵22,嘿嘿 ...
- shell字符串的空值检查
随机推荐
- java面试考点-HashTable/HashMap/ConcurrentHashMap
HashTable 内部数据结构是数组+链表,键值对不允许为null,线程安全,但是锁是整表锁,性能较差/效率低 HashMap 结构同HashTable,键值对允许为null,线程不安全, 默认初始 ...
- matlab.坑01
1.数据的行列 位置 1.1.c++中二维数组与二维mwarray数据格式之间的相互转换 - weixin_38723958的博客 - CSDN博客.html(https://blog.csdn.ne ...
- $.ajax 中的contentType类型
参考链接:https://www.jianshu.com/p/f4d92b3d387d
- python进程池 使用Queue实现计数功能
多进程中各个进程间相互隔离,进程间通信需要使用到通道. 多进程中使用Queue实现进程中通信 from multiprocessing import Process,Queue import time ...
- [Cometoj#3 A]比赛_枚举/堆
比赛 题目链接:https://cometoj.com/contest/38/problem/A?problem_id=1534 数据范围:略. 题解: 原题没啥意思,就是个暴力枚举. 出了个加强版, ...
- Win10默认输入法怎么打顿号
这个问题发现于一个月之前,解决于今天,方式百度. 一.主要是想纪念一下我这一个月的蠢操作(贴图证蠢): 这一个月我的顿号都是这样打出来的,(′д` )…彡…彡 二.闲话少叙,说一下解决方式: 之前用的 ...
- dp 状态压缩
之前我们在讨论的dp形式当中, 大多数是对整数的动态规划, 然而对于集合而言呢 ? 我们使用 DFS 吗, 看起来也可以, 但是加上dp记忆 数组的 动态规划效率更高: 那么进一步讨论, 我们如何表示 ...
- fiddler笔记:统计选项卡(Statistics)
Request Count 选中的Session数. Bytes sent Http请求头和请求体中向外发送的字节总数. Bytes received HTTP请求头和请求体中接收到的所有字节数. R ...
- cygwin gcc 编译windowsAPI 报错的一个解决方案
一开始按照linux的习惯去编译一个使用了windowsAPI的程序 结果提示: $ i686-pc-cygwin-g++ screen_catch.cscreen_catch.c: In funct ...
- SMTP实现发送邮箱2(封装版)
SMTP.h #ifndef __SMTP_H__ //避免重复包含 #define __SMTP_H__ #include <iostream> #include <list> ...