浅谈Kotlin(四):控制流

浅谈Kotlin(一):简介及Android Studio中配置

浅谈Kotlin(二):基本类型、基本语法、代码风格

浅谈Kotlin(三):类

浅谈Kotlin(四):控制流

本篇介绍Kotlin的控制流语法(if,for,while,when....)

一、if 语句

  1、基本用法:

     var a = 10;
        if(a > 5){
            Log.i("xqxinfo","a>5成立")
        }else{
            Log.i("xqxinfo","a>5不成立")
        }
  
     打印日志:xqxinfo: a>5成立

  2、判断结果赋值

var a = 5;
var b = 10;
var max = if(a>b) a else b
Log.i("xqxinfo","最大值max:"+max)

打印日志:xqxinfo: 最大值max:10


注意:可以将结果体放在{}中

二、for循环

虽然你在使用了collections的函数操作符之后不会再过多地使用for循环,但是for循 环再一些情况下仍然是很有用的。

提供一个迭代器它可以作用在任何东西上面:

for (item in collection) { print(item) }

如果你需要更多使用index的典型的迭代,我们也可以使用 ranges (反正它通常 是更加智能的解决方案):

for (index in 0..viewGroup.getChildCount() - 1) { val view = viewGroup.getChildAt(index) view.visibility = View.VISIBLE }

在我们迭代一个array或者list,一系列的index可以用来获取到指定的对象,所以上 面的方式不是必要的:

for (i in array.indices) print(array[i])

三、while循环

  1、while

var a = 10;
while (a<15){
    a++;
    Log.i("xqxinfo", "变量a的数值增加1,当前变量a="+a)
}

打印结果:

  2、do-while

var a = 10;
do {
     a++;
     Log.i("xqxinfo", "a自增一,当前值:" + a)
}while (a<15)

打印结果:

四、when (效果类似于switch)

1、基本使用

when 表达式与Java中的 switch/case 类似,但是要强大得多。

这个表达式会去 试图匹配所有可能的分支直到找到满意的一项。

然后它会运行右边的表达式。

与 Java的 switch/case 不同之处是参数可以是任何类型,并且分支也可以是一个条 件。

对于默认的选项,我们可以增加一个 else 分支,它会在前面没有任何条件匹配时 再执行。

var a = 10;

when(a){

  注意:{}括起来满足这个条件的语句,一行写一个代码,不要写在一行里

  2、条件可以是一系列被逗号分割的值。

var a = 10;
when(a){
  10,11 -> {
     Log.i("xqxinfo", "a满足10||11");
  }
  else -> Log.i("xqxinfo","执行else")
 }

打印结果:
I/xqxinfo: a满足10||11 

  3、可以检测类型

when(view) {
    is TextView -> view.setText("I'm a TextView")
    is EditText -> toast("EditText value: ${view.getText()}")
    is ViewGroup -> toast("Number of children:       ${view.getChildCount()} "
    else -> view.visibility = View.GONE
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码云1024

字符流之FileReader&FileWriter

2675
来自专栏钟绍威的专栏

简单的Writer和ReaderWriter的主要方法Writer工作原理Reader的主要方法readLine():String

Writer用于写出去到文件中,Reader用于将外面的文件读进来控制台 Writer和Reader有许多子类,但是子类大多都是直接运用父类Writer和R...

1825
来自专栏禁心尽力

XML技术之SAX解析器

1.解析XML文件有三种解析方法:DOM SAX DOM4J。 2.首先SAX解析技术只能读取XML文档中的数据信息,不能对其文档中的数据进行添加,删除,修改操...

2375
来自专栏Android知识点总结

Java总结IO篇之字节流与字符流转化

1472
来自专栏Android开发指南

14:IO之字符字节流

3519
来自专栏Android干货

Java网络编程--套接字Socket

37314
来自专栏用户画像

获得InputStream,读取配置文件的方式

InputStream in = new BufferedInputStream(new FileInputStream("E:\\svn_new\\3icom...

3732
来自专栏Java帮帮-微信公众号-技术文章全总结

Java基础-21(02)总结字符流,IO流编码问题,实用案例必做一遍

C:把集合中的数据存储到文本文件 package cn.itcast_02; import java.io.BufferedWriter; import jav...

3744
来自专栏Java帮帮-微信公众号-技术文章全总结

Java基础-20(02)总结,递归,IO流

(4)FileInputStream读取数据 A:操作步骤 a:创建字节输入流对象 b:调用read()方法 c:释放资源 B:代码体现: File...

3366
来自专栏流柯技术学院

Selenium学习笔记之外部化相关测试数据---xml

我们也可以用xml来定义一个信息更为丰富的UIMap.xml文件,比如,额外还添加控件所属的页,控件的类型,然后解析构建一个XMLParser类来读取相应的值。

832

扫码关注云+社区