Kotlin学习(二)—— 基本语法函数变量,字符串模板条件表达式,null,类型检测,for,while,when,区间,集合

原创 2017年12月01日 00:00:00

作者:刘某人程序员

博客:/qq_26787115

声明:未经原作者允许请勿转载


一.基本语法


Kotlin的很多概念跟JAVA是有类似的,所以我应该不会

像我的JAVA之旅一样那么的详细,但是不用担心,你会看的很明白的,我也是根据官方的文档来学习的


我们在IDEA中创建一个项目Kotlin02


1.函数(fun)


我们默认有一个主函数,就是main了

640?wx_fmt=png&wxfrom=5&wx_lazy=1


和JAVA一样,他就是程序的主入口了,当然,我们还有普通的函数

640?wx_fmt=png&wxfrom=5&wx_lazy=1

这里就可以对Kotlin的函数有一个比较清晰的认识了,首先,我们的无参 无返回中有一个Unit,这个就是标志 
这个函数没有返回值,和JAVA中的void是一样的,而且我们一般是可以省略掉的,并且这里要注意下的就是他的函数传值 
是先定义变量,再用冒号去指向类型,如a:Int b:String,并且返回值也是用冒号去指向的,如:Int


并且我们还可以将表达式作为函数体、返回值类型⾃动推断的函数,如:

0?wx_fmt=png


2.变量(val&var)


变量分三种,局部变量,顶层变量和可变变量

但是就两个修饰符val 和 var

0?wx_fmt=png


用val修饰符修饰之后,只能一次赋值后就编程只读变量了,在JAVA中可以理解为常量,这里怎么理解呢,可以说是JAVA中用final修饰一样,我们来举个例子

0?wx_fmt=png

这里的意思就是我定义一个Int类型的a,然后输出a + 2,编译器会提示错误,因为val修饰后无值,不可操作,然后我给他赋值= 3,就可以正确输出了


这里还有一点要注意的就是,我们可以 val c: Int这样定义一个变量,先不赋值,但是如果你不指定值又不定义类型,比如val a,那是错误的,编译器无法得知你需要做什么操作


我们再来看下可变变量,用法是一样的,但是注意的事,他是可变的

0?wx_fmt=png

这里就可以明白,a输入2,然后a++,输出3


还有最后一种顶层变量,顶层变量其实就是JAVA中的全局变量,这个没什么可说的

0?wx_fmt=png

这个就没什么好说的了


3.字符串模板($)


字符串模板也是比较简单的,就是字符引用,我们来看一段例子

0?wx_fmt=png


然后run一下,输出

0?wx_fmt=png


可以看出,这里我输出的时候就引用了变量boy和girl,只需要前面加上$即可,有点类似于JAVA中的转义字符


当然,还有一些更加高级的用法,比如

0?wx_fmt=png


这里我们可以看到输出

0?wx_fmt=png


也就是说,我们可以直接操作,当然,本质上这样转义跟下面这样并没有什么区别

0?wx_fmt=png

你觉得哪种方便呢?


4.条件表达式(if else)

0?wx_fmt=png

if else 一直都是这种写法,当然,简单判断的话,我们还可以这样去写

0?wx_fmt=png


5.可空值及 null 检测(?)


还记得我们在java中怎么去写函数的嘛?比如

0?wx_fmt=png


这是一段JAVA代码,我们可以看到,如果我们通过逻辑操作后可以让y赋值,但是也同样的,有存在有可能返回null的情况,但是在kotlin中,我们需要特殊处理

0?wx_fmt=png

这里注意,如果返回值有可能为空的话,需要标记?问号,不然你return null会报错


6.类型检测及⾃动类型转换(is)


类型检测在JAVA中都是用instanceof来处理,在kotlin中,可以用is,我们看一个例子

0?wx_fmt=png

在这段代码中,我说明一下,Any是所有类都有一个共同的父类,类似于Object,但是他的神通没有Object大


而在这段代码中,首先,我用is判断了String,这里可不仅是判断,而且还类型转换了,所以为true的话,就可以输出a.length了,但是在没有调用is之前,实际上是没有length这个方法的


7.for循环(for in)

0?wx_fmt=png

这段代码中,我们定义了一个list为a,然后通过in去for循环,这里我要说一下,就是字符串模板的应用场景。


比如输出的结果需要换行,那么print(b + “\n”)你这样用+号是错误的,需要print(“$b \n”),在Kotlin中,in负责for循环,即最大次数为list长度


当然,如果你想问,那我想知道下标是多少怎么办?

0?wx_fmt=png

实际上in只是提供循环的手段而已,真正要循环的东西,还是要自己决定,所以这里,我就循环list的下标a.indices


这样我就可以拿到下标以及对应的值,也是一样的,当然,这个输出我们可以用更官方的写法来写的:

0?wx_fmt=png


一样,我们可以看到打印

0?wx_fmt=png


8.while循环(while)

0?wx_fmt=png

while循环没什么好讲的,你按照正常的来就好了


9.when表达式(when)

0?wx_fmt=png

从这段代码大家可以看出一些东西来吧,没错,实际上Kotlin中的when表达式就是JAVA中的switch语句块 -> 相当于case


10.区间(range)

0?wx_fmt=png

我们通过int可以判断x是否在1-10的区间,当然,区间的用法还是比较多的,比如数列迭代等,这些我们后面会详细讲到


11.集合

集合在我们上面for循环的时候就已经出现过

0?wx_fmt=png

集合的用处很广泛,我们在后面还会细讲,这里举一个例子:

0?wx_fmt=png0?wx_fmt=png


我们先看下输出结果

0?wx_fmt=png

这个题出的有点粗糙,大家看的懂就行,意思就是我们只有三种水果给到三个喜欢吃的投票员,他会给我相应的分数,最后超过5分就合格,然后我们来分析下这个题目


首先我们定义了一个集合fruit来表示我当前的水果,然后我定义fractions来进行分数的累加,开始循环并且判断谁喜欢吃,给几分,最后判断是否大于5,


题目很简单,但是我们的逻辑也是从这里开始萌发的


这些大概就是Kotlin的大致介绍了,实际上这门美丽的语言不止是这些内容,当你已经了解了这些之后,我们就可以进行下一个环节,正在的开始没一个知识点的细讲了


如果有兴趣的话,可以来Github参与一下

Kotlin:

https://github.com/LiuGuiLin钱柜娱乐开户/Kotlin


0?wx_fmt=jpeg

一命二运三风水,四修阴德五读书!

0?wx_fmt=jpeg

刘桂林

微信号 : 钱柜娱乐开户_LiuGuiLin

新浪微博:@刘某人程序员



版权声明:本文为博主原创文章,未经博主允许不得转载。

Kotlin学习(二)—— 基本语法,函数,变量,字符串模板,条件表达式,null,类型检测,for,while,when,区间,集合

一.基本语法Kotlin的很多概念跟JAVA是有类似的,所以我应该不会像我的JAVA之旅一样那么的详细,但是不用担心,你会看的很明白的,我也是根据官方的文档来学习的我们在IDEA中创建一个项目Kotl...
  • qq_26787115
  • qq_26787115
  • 2017年11月20日 10:30
  • 1492

Kotlin编程之if语句,while循环,when表达式,for循环

Kotlin编程:if语句,while循环,when表达式,for循环
  • hexingen
  • hexingen
  • 2017年05月31日 22:15
  • 1731

Kotlin基础语法学习笔记

Kotline简介 Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函...
  • yubo_725
  • yubo_725
  • 2016年02月28日 12:12
  • 15189

Kotlin中的流程控制语句

流程控制语句是编程语言中的核心之一。可以分为 分支语句、循环语句和跳转语句。下面我们深入的了解Kotlin的流程控制语句。ifif-else语句是控制程序流程的最基本的形式,其中else是可选的。在K...
  • IO_Field
  • IO_Field
  • 2016年10月17日 22:05
  • 11250

Kotlin系列一(基本语法)

前言  前两天在Google IO 大会上宣布Kotlin成为开发钱柜娱乐开户的官方语言,之前就对Kotlin有一定的了解和关注,但是一直没花时间学习,那么,现在Kotlin成为官方语言了,想必一定...
  • a172131234
  • a172131234
  • 2017年05月23日 11:01
  • 1091

Kotlin学习记录(五)—— 条件表达式的使用

接上篇: Kotlin学习记录(四)—— 常用集合的使用 if/else: 直接上代码吧: var x: Int = 666 var y:Int if(x>0){ ...
  • u011732740
  • u011732740
  • 2017年06月12日 17:18
  • 1057

case when条件表达式

SQL CASE 表达式是一种通用的条件表达式,类似于其它语言中的 if/else 语句。  CASE WHEN condition THEN result  [WHEN ...]  [EL...
  • liqfyiyi
  • liqfyiyi
  • 2016年11月16日 14:07
  • 2416

Kotlin语法(十八)-高阶函数和Lambda表达式

参考原文:http://kotlinlang.org/docs/reference/lambdas.html        高阶函数(Higher-Order Functions)       ...
  • tangxl2008008
  • tangxl2008008
  • 2016年11月22日 09:32
  • 5954

钱柜娱乐开户 kotlin其它(二)集合、区间、操作符

集合 与大多数语言不同,Kotlin 区分可变集合和不可变集合(lists、sets、maps 等) Kotlin 没有专门的语法结构创建 list 或 set。 要用标准库的方法,如 listO...
  • u010296640
  • u010296640
  • 2017年06月05日 16:50
  • 245

Vue--基础模板语法以及计算属性

属性和方法 每个Vue实例会代理其data对象里所有的对象 var app = new Vue({ data: { message : '' } })也就是说,可以直接...
  • u012062760
  • u012062760
  • 2016年11月17日 22:14
  • 7312
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Kotlin学习(二)—— 基本语法函数变量,字符串模板条件表达式,null,类型检测,for,while,when,区间,集合
举报原因:
原因补充:

(最多只允许输入30个字)