Range与面向对象的Kotlin
在上一次https://www.cnblogs.com/webor2006/p/11186089.html中已经用到了范围相关的东东了,如下:

所以这次专门针对Koltin范围相关的东东再来细学一下,看在Kotlin中对于范围的表示有哪些其它的方式。
Range:
话不多说,直接开撸:

那如果要表示不在区域呢?

如果想打印2到10的数字,按照Java的通常做法就是用for循环来依次输出,在Kotlin中可以这样写:

另外还有一个等价写法:


那如果步长想要改成2,而不是一步步增长呢?很简单:

输出:

那如果想倒着来输出呢?也很简单:

字符串集合遍历:

接着来写这样个逻辑“如果发现world在集合中则打印一句话”,此时可以采用when来实现,如下:

接下来需求升级:“从集合中找到元素长度大于五,然后将符合的所有元素都转换成大写字母, 接着再按字母升序进行自然排序,最后将排序的结果输出到控制台上”,哇,条件好多,是的,就是为了操练,在Kotlin中如何搞呢?如果是用Java8的函数式很容易达到需求,这里Kotlin也是可以采用函数式编程,如下:




运行:

可见用了函数式编程写出来的代码可读性更加强,它跟Java8的函数式写法基本上类似。
字符串转义输出:
对于在字符串中想换行的话,需要使用"\n",如下:

但是!!有时候可能就想原封不动的将字符串输出,不想将“\n”进行转义,此时可以用“\\n”来将其输出出来,如下:

但是!!如果代码中有很多这样的不需要转义的字符那可能会让代码变得比较乱,两个双斜线比较晕,Kotlin有一种新的方式来解决不转义的问题,如下:

面向对象的Kotlin:
到目前为止,我们所撸的Kotlin的代码全是一个裸函数,没有编写过类,所以接下来得准备学习Kotlin面向对象相关的东东了,跟Java还是有非常大的不同的,需仔细的学一学,下面来定义一个Kotlin的空类:

貌似跟Java定义没啥区别嘛,其实本质上是完全不一样的,待之后不断深入学习再来体现它的不一样。在Kotlin中空类可以将花括号给省掉,变成如下:

是不是看着有点别扭,嗯,确实是跟Java不同,另外如果我们想定义一个public的类:

所以还是将public给去掉,另外还有一点细节跟Java不一样,就是类名可以跟文件名不一样,这在Java是不允许的,如下:

对于类中是有构造方法的,而在Kotlin中的构造方法的定义跟Java区别不是挺大的,规则是:“一个类可以有一个primary构造方法以及一个或多个secondary构造方法,primary构造方法是类头(class header)的一部分,它位于类名后面,可以拥有若干参数,如果primary构造方法没有任何注解或者可见性关键字修饰,那么constructor关键字可省略。”
我们知道在Java中构造方法是定义在类体中的,但是在Kotlin中不是的,下面咱们来定义一个带参数的构造方法:

其中根据“如果primary构造方法没有任何注解或者可见性关键字修饰,那么constructor关键字可省略”替则,很显然我们可以将constructor关键字给省掉,变成:

在Kotlin中primary构造方法是不能有任何代码的,那问题来了,构造方法不就是用来给类的成员进行赋初值的么?那在哪赋值呢?其实是有地方的,如下:

其中定义成员字段跟Java类似,可以直接用构造参数进行初始化,如下:

接下来用下该类:

对于Kotlin的构造方法的声明相比Java的来说确实是有点不适应,但是思考一下Kotlin的这个设计其实是更加合理的,为啥,因为构造方法本来就不是一个方法,不应该放在像Java那样跟普通方法放一起,有点歧义,所以需要适应Kotlin的这些改变。
Range与面向对象的Kotlin的更多相关文章
- 写给Android开发者的Kotlin入门
写给Android开发者的Kotlin入门 转 https://www.jianshu.com/p/bb53cba6c8f4 Google在今年的IO大会上宣布,将Android开发的官方语言更换为K ...
- Kotlin开发springboot项目(二)
Kotlin开发springboot项目(二) 中文学习网站: https://www.kotlincn.net/ 研究一下kotlin的demo: https://github.com/JetBra ...
- Kotlin介绍
Kotlin介绍 转 https://www.jianshu.com/p/d30406daaf25 Google在今年的IO大会上宣布,将Android开发的官方语言更换为Kotlin,作为跟着Goo ...
- Kotlin教程
Kotlin是一种静态类型的编程语言,由JetBrains开发.如果你有Java的基础知识,你很快就能学会Kotlin.这个Kotlin教程是为初学者设计的,因此即使您不了解Java,也可以理解Kot ...
- 安卓开发(2)—— Kotlin语言概述
安卓开发(2)-- Kotlin语言概述 Android的官方文档都优先采用Kotlin语言了,学它来进行Android开发已经是一种大势所趋了. 这里只讲解部分的语法. 如何运行Kotlin代码 这 ...
- Kotlin——从无到有系列之中级篇(四):面向对象的特征与类(class)继承详解
如果您对Kotlin很有兴趣,或者很想学好这门语言,可以关注我的掘金,或者进入我的QQ群大家一起学习.进步. 欢迎各位大佬进群共同研究.探索 QQ群号:497071402 进入正题 在前面的章节中,详 ...
- Kotlin 区间和循环 Loop和Range
在kotln中有一种很简单的方式来表达某一个区间的数字. 比如我想存储1~100. 我在其他的语言中可以用数组,步骤大概有三个把. 但是在kotlin中就只需要一步. 代码如下: fun main(a ...
- python自动化--语言基础五面向对象、迭代器、range和切片的区分
面向对象 一.面向对象简单介绍: class Test(): #类的定义 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 def __ini ...
- Kotlin中Range与异常体系剖析
好用的集合扩展方法: 下面来看一下对于集合中好用的一些扩展方法,直接上代码: 如果我们想取出集合中的第一个值和最后一个值,用Java方式是get(0)和get(size-1),但是在Kotlin中提供 ...
随机推荐
- [LeetCode] 278. First Bad Version 第一个坏版本
You are a product manager and currently leading a team to develop a new product. Unfortunately, the ...
- Java之浮点数运算
浮点数运算和整数运算相比,只能进行加减乘除这些数值运算,不能做位运算和移位运算. 在计算机中,浮点数虽然表示的范围很大,但是浮点数有个非常重要的特点,就是浮点数常常无法精确表示 举例 浮点数0.1在计 ...
- 进入docker 内部
$ sudo docker ps $ sudo docker exec -it 775c7c9ee1e1 /bin/bash
- kindeditor——开源的HTML可视化编辑器
官网:http://kindeditor.net/demo.php 主要操作文档:http://kindeditor.net/docs/option.html
- Windows下mysql安装配置问题
下载最新版的mysql: https://dev.mysql.com/downloads/mysql/ 下载完成后解压打开安装包如下 打开cmd以管理员身份运行(一定要以管理员身份运行) 然后输入命令 ...
- 02 Struts2框架----学习笔记2(了解一下,已过时)
1.*号通配符优化struts.xml代码 创建一个UserAction的动作类 package action; import com.opensymphony.xwork2.ActionSuppor ...
- [gRPC] 在 .NET Core 中创建 gRPC 服务端和客户端
gRPC 官网:https://grpc.io/ 1. 创建服务端 1.1 基于 ASP.NET Core Web 应用程序模板创建 gRPC Server 项目. 1.2 编译并运行 2. 创建客户 ...
- Android--ScrollView边界回弹效果
/* * Copyright (C) 2006 The Android Open Source Project * * Licensed under the Apache License, Versi ...
- Centos 7 替换镜像源
1 备份原始源 [root@localhost ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.b ...
- ASP.Net Core 2.1+ Cookie 登录授权验证【简单Cookie验证】
介绍 本文章发布于博客园:https://www.cnblogs.com/fallstar/p/11310749.html 作者:fallstar 本文章适用于:ASP.NET Core 2.1 + ...