kotlin学习三:初步认识kotlin(第二篇)

上一章熟悉了kotlin基本的变量和函数声明,并明白了如何调用函数。本章再来看一些其他有用的东西

包括:

  1. kotlin代码组织结构

  2. when语法

  3. 循环迭代语法

  4. try表达式

和JAVA一样,kotlin也可以使用”包”来组织代码文件,和JAVA的语法一样,使用package定义包,使用import导入包

但是也有许多不同,例如JAVA中通常包名就对应了类文件的存放路径,比如package cn.java.ch1下有一个User类,那么

对应的Java源文件名应该叫User,位于cn/java/ch1这个文件夹下。但是kotlin没有这个要求,文件名你可以随便起。

文件也可以随便放,文件内想定义几个类,或者是没有类,直接定义顶级函数,都随你。基本没有任何限制

同一个包下的定义的函数,属性等可以直接在其他文件中使用,不同包的如果需要引用,则需要使用import语句,语法和JAVA一样

通过一个例子来看一下:

上边的代码中,函数createRandomRectangle使用了Random类,需要导入java.util包

在另外一个包下新建文件,内容如下:

这个文件和上边的文件不在同一个包,因此用到另一个包中的类时,需要使用import语句进行导入。同样可以导入另一个文件的顶级函数

用法和JAVA基本是一致的。

首先建个文件,声明一个枚举类型,来说明when语法的使用

enum是关键字,声明枚举类型使用的。类名后边的括号中是构造参数,先明白那个是构造就够了,后续的文章中关于类的学习部分会详细说的

这里的意思就是声明了一些枚举值,并使用构造函数中的参数来赋值枚举项

getMnemonic函数,需要一个Color类型的枚举值,根据枚举值不同返回不同的字符串给调用方

main函数调用getMnemonic函数,传递Color.BLUE,函数会返回对应的Battle,这里主要看when的语法结构

when后的括号中是你要判断的参数,when的大括号体内就是一个个的分支判断了。所以不用when,我们也可以使用if判断来代替。

至于箭头语法,相信用过JDK8的应该不陌生,就是所谓的lambada表达式了。整个语法和JAVA中的switch case很像,但是明显的区别就是when语法不需要break

如果现在我想让参数为Color.BLUE和或者Color.GREEN时,返回一样的字符串,该如何做?很简单

Color.GREEN, Color.BLUE -> “Gave”
改成这样即可,多个判断分支使用逗号隔开,就是这么简单

去掉枚举的类名前缀,直接使用枚举常量:

如果不想带Color前缀,也简单,首先导入枚举类。导入语句如下:

import action.kotlin.ch2.enumtest.Color.*

然后when的判断中直接写:

GREEN, BLUE -> “Gave”

无需再带Color前缀了。

关于when的分支判断,还有一些组合使用方式,这里不多说了,以后用到会介绍

kotlin支持while和do while循环,这两种形式的循环迭代和JAVA中的写法没有区别,参考JAVA的即可

kotlin中有一个名为范围操作符的东西。写作:.. 两个点,例如我想声明一个变量,这个变量包含数字1到10,可以如下声明:

接着可以使用for,while等循环语句来迭代访问,以for循环为例:

上边for循环就是kotlin中for循环的语法,使用 for(var in collections)的语法来进行for迭代

kotlin提供了downTo关键字用来反向迭代,例子:

反向迭代一百次,每次输出迭代的值,downTo指定从100迭代到的下限值,step指定了迭代的步阶

上述代码的test函数检测参数是否在0-100之间,如果不是抛出异常,可以直接使用java中的异常类。语言和java也没什么不同

这个例子函数计算两个数相除,除0引发异常,捕获并作相应处理,和JAVA中也并没有什么不同,唯一的区别就是e: Exception

这里遵循kotlin声明变量的语法:变量名: 类型

Original: https://www.cnblogs.com/leemz-coding/p/7642351.html
Author: 框架搬运工
Title: kotlin学习三:初步认识kotlin(第二篇)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/620634/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • nginx Segmentation fault (core dumped)

    1,问题描述 nginx运行正常,某些时候登陆服务器 nginx -t命令,突然出现 Segmentation fault (core dumped) 2,解决步骤 对nginx进…

    Java 2023年5月30日
    092
  • 七、Java数组

    Java数组 什么是数组 数组是相同类型数据的有序集合。 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。 其中,每一个数据称作为一个数组元素,每个数组元素可以通…

    Java 2023年6月7日
    073
  • 都是中文用户名惹的祸~

    进入公司遇到的第一个棘手BUG; 在数据库连接和配置都无误的前提下,服务怎么都启动不了,控制台报如下的错: 在经过百度的检索以及老员工的提点后,最终确定了问题所在; 都是中文用户名…

    Java 2023年6月8日
    081
  • JavaWeb-Servlet基础

    前言 Servlet是 JavaWeb中最核心的组件. Servlet规范为 JavaWeb应用制定了对象模型: 请求对象(ServletRequest): Servlet从该对象…

    Java 2023年5月29日
    072
  • 应用系统缓存体系深入研究(Java版)

    一、序言 在使用MyBatis、MybatisPlus等DAO层数据库访问框架式,常常会与一级缓存、二级缓存打交道,为了增强对缓存体系的整体把控力,提高软件应用响应速度,这里对三级…

    Java 2023年6月6日
    079
  • Spring Boot下的一种导入Excel文件的代码框架

    1、前言 ​ Spring Boot下如果只是导入一个简单的Excel文件,是容易的。网上类似的文章不少,有的针对具体的实体类,代码可重用性不高;有的利用反射机制或自定义注解,开发…

    Java 2023年6月14日
    080
  • 分析 java.util.HashMap 源码

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月9日
    060
  • 程序员坐牢了,会被安排去写代码吗?

    点击蓝色”程序员黄小斜”关注我哟 加个”星标”,每天和你一起多进步一点点! 今天给大家分享一篇有意思的爽文,但也是根据多年之前一个真…

    Java 2023年6月8日
    068
  • ssl生成以及nginx https配置

    https://blog.csdn.net/weixin_35884835/article/details/52588157 Original: https://www.cnblo…

    Java 2023年5月30日
    074
  • Leetcode链表

    Leetcode链表 边学边刷的……慢慢写慢慢更 题干: 思路: 删除链表节点,就多了一个判断等值。 由于是单向链表,所以要删除节点时要找到目标节点的上一个…

    Java 2023年6月7日
    089
  • TypeScript(7)泛型

    泛型 指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定具体类型的一种特性。 引入 下面创建一个函数, 实现功能: 根据指定的数量 count 和数据 val…

    Java 2023年6月9日
    093
  • 【转】【Revit】Revit 二次开发 特殊族实例参照获取

    Reference 是Revit对象的引用 也是二次开发必须了解和熟练掌握的技能之一,对象引用包括 图元基础引用 可以根据此引用 实现图元转化 参数信息过滤和设置,此外对于标注来说…

    Java 2023年5月29日
    084
  • 2020 年你读过的书中,印象最深刻的 3 本是什么

    《过得刚好》、《真希望我父母读过这本书》、《CSS世界》。 这是亚马逊 kindle 发起的一个话题活动。我把自己的留言在博客中也记录一下。 从这本书了解了郭德纲。当年反对郭德纲的…

    Java 2023年6月16日
    073
  • MarkDown学习

    MarkDown学习 二级标题 三级标题 三级标题 字体 helloworld 两边两个星号 _helloword_两边一个星号 _helloword_两边三个星号 hellowo…

    Java 2023年6月5日
    0102
  • ch02 JAVA入门

    JAVA入门 JAVA特点 语法和C语言类似 没有指针和内存管理 高度可移植性,运行在JVM虚拟机上 面向对象 类型安全 高质量的类库 JAVA的平台、系统和工具 构建工具:Ant…

    Java 2023年6月9日
    0102
  • Java单例模式推荐写法-双重检测机制实现单例模式

    本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/256 Java单例模式推荐写法&#…

    Java 2023年5月29日
    066
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球