Any类型:

定义一个函数,其参数接受所有类型,对于Java而言Object是所有类的基类,而在Kotlin中得用Any关键字,如下:

其中瞅一下该Any字段是个啥类型:

然后里面做一些判断:

这是因为Kotlin自动的将str转换成了String了,因为有了条件类型的判断了,如下:

我们知道如果换成是Java,代码肯定得这样写:

很明显可以看到Kotlin更加的智能,对于Java明显显得有点麻烦,好,接下来调用一下,这里有个小技巧,对于我们Java而言如果在IDE中敲sout就可以快速的打出Sytem.out.println(),而其实对于Kotlin中也可以用sout这个快捷方式打出println(),如下:

接下来调用一下:

数组相关:

而其实类型声明可以去掉,因为可以类型推断出来:

接着来看一下intArrayOf的官方说明:

所以可以看到就是一个Int类型的数组,对于Kotlin的Int目前已经使用比较多了,有必要对它进一步了解,跟进去瞅下它到底是啥?

是一个Int的类,另外IntArray类型也再瞅一下:

好接下来则遍历一下数组,有几种方式,之前也已经使用过了,如下:

其中由于有类型推断,所以这块类型声明可以去掉:

接着换一种方式,可以遍历数组的下标,也是Kotlin提供的一个方便的方式,如下:

最后还有一种方式,同时可以遍历元素和索引:

when关键字:

它的应用场景是非常多的,跟Java的if...else if...或switch..case的作用差不多,下面编写一个函数,来完成这样的一个功能:如果传给函数的参数是“hello”,则会转换成“HELLO”返回,而如果传的是“world”则会转换成“WORLD”返回,而如果是传的是“hello world”则会转换成“HELLO WORLD”返回,而如果是其它的字符串则直接“other input”,对于Java来实现这个需求那是非常简单的,但是在Kotlin中如何利用when关键字来实现呢,如下:

其实它还有更加精简的写法,IDE已经给出提示了:

可以用IDE的提示:

下面来调用一下:

其实。。程序还可以继续简化,因为咱们目前这个函数体就只有一个when表达式,其实是可以直接给函数赋值的,如下:

另外继续来用下when:

那,如果a要在一个范围内来匹配,而不是只匹配一个值该怎么弄呢?

那如果还要匹配更多的值呢?

其中看一下细节,对于这个“..”查看它的定义,其实会看到是它:

好,另外目前程序还是报错的,如下:

所以:

该关键字在实际开发中是非常常用的,所以需要好好消化。

Kotlin编译器优化与when关键字详解的更多相关文章

  1. 【转载】C/C++中extern关键字详解

    1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...

  2. Java面试题04-final关键字详解

    Java面试题04-final关键字详解 本篇博客将会讨论java中final关键字的含义,以及final用在什么地方,感觉看书总会有一些模糊,而且解释的不是很清楚,在此做个总结,以备准备面试的时候查 ...

  3. Objective-C 实用关键字详解1「面试、工作」看我就 🐒 了 ^_^.

    在写项目 或 阅读别人的代码(一些优秀的源码)中,总能发现一些常见的关键字,随着编程经验的积累大部分还是知道是什么意思 的. 相信很多开发者跟我当初一样,只是基本的常用关键字定义属性会使用,但在关键字 ...

  4. loadrunner 脚本优化-关联函数web_reg_save_param()函数详解

    脚本优化-关联函数web_reg_save_param()函数详解   by:授客 QQ:1033553122 Insert->New Step,打开Add Step对话框 选择函数web_re ...

  5. Delphi、Lazarus保留字、关键字详解

    Delphi.Lazarus保留字.关键字详解 来自橙子,万一的博客以及其他地方 保留字:变量等标识符可以再使用: 关键字:有特定含义,不能再次重新定义: 修饰字:类似保留字的功能,也就是说可以重用 ...

  6. java关键字(详解)

    目录 1. 基本类型 1) boolean 布尔型 2) byte 字节型 3) char 字符型 4) double 双精度 5) float 浮点 6) int 整型 7) long 长整型 8) ...

  7. Delphi 关键字详解

    Delphi 关键字详解[整理于 "橙子" 的帖子] absolute //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var   Str: ];   S ...

  8. python关键字详解

    今天依旧在啃:<笨方法学python>,其中习题37是复习各种关键字.我本想百度一下记一下就ok了,但是百度出来第一个就Hongten的博客.我才意识到我也有博客,我应该学习他,把这些积累 ...

  9. Tomcat 优化方案 和 配置详解(转)

    转自 Tomcat 优化方案 和 配置详解 http://201605130349.iteye.com/blog/2298985 Server.xml配置文件用于对整个容器进行相关的配置. <S ...

随机推荐

  1. 用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它(总结)

    本文介绍如何保护API,无需看前边文章也能明白吧. 预备知识: http://www.cnblogs.com/cgzl/p/9010978.html http://www.cnblogs.com/cg ...

  2. C#不区分大小写的字符串替换(Replace)函数

    在.NET中,不调用C++/CLI,进行字符串替换有好几种方法: 1.最常用的,就是String实例.Replace(),但这个不能忽略大小写. 2.System.Text.Regex(Regular ...

  3. LeetCode 788. 旋转数字(Rotated Digits) 36

    788. 旋转数字 788. Rotated Digits 题目描述 我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数.要求每位数字 ...

  4. TCP协议的11种状态及其变化过程?传输的内容又是什么?

    在TCP的11种状态变迁中,我们需要用到TCP头部的三个标志位: 1.SYN,SYN=1表示这是一个连接请求报文或者连接接受报文 2.ACK,ACK=1,表示确认号生效 3.FIN,FIN=1表示发送 ...

  5. 12 Cookie、Session和JSP基础

    1.会话技术 (1)会话概念:一次会话中包含多次请求和响应.一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 (2)会话功能:在一次会话的范围内的多次请求间,共享数据 (3)会 ...

  6. #安装memcache

    安装memcache sudo apt-get install memcached sudo apt search php-memcache sudo apt-get install php-memc ...

  7. CF1051D Bicolorings

    题目描述 咳咳,懒得复制了上面是两张图:) 解题思路 这题是一道很好的题,感觉之前做过,一开始手推状态找规律,可以用状压但是没想到 借鉴了一下大佬的dp modify数组用以累加新增的状态数 dp数组 ...

  8. P3275 [SCOI2011]糖果 题解

    一道差分约束的模板题. 题目 题意:n个人每个人至少一个糖果,另外要满足k个不等式,求最少糖果数. 差分约束系统 给定一组不等式 $ x[i]-x[j]<=c[k] $ (或 $ x[i]-x[ ...

  9. Linux iptables常用防火墙规则

    iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机) iptables -A INPUT -m stat ...

  10. 【简●解】[HNOI2005]星际贸易

    [大意] 太多了,懒得打,贴\(LG\)的图了... [分析] 开始拿到这道题有点慌:怎么限制条件这么多,再读读题. 注意一个东西,就是贸易额与费用是独立分开的,并且题目保证只有一种方案获得最大贸易额 ...