有关kotlin的知识点:

在学习lambda之前,我们先了解一下什么是lambda,简答来说就是一小段代码块,并且我们可以将这个代码块在函数之间传递,这是函数式编程的一个重要特性。

通常我们会需要一个函数,但是又不想定义一个函数那么费事,这个时候就可以使用 lambda 表达式来完成工作。

我们来举一个例子:

在java的开发中我们经常会看见这种代码:

button.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View view) {

// 这里写你需要的东西

}

});

站在java的角度来看这个代码,它确实没什么问题,但是,如果你看到kotlin的版本的代码就不会这样想了,

button.setOnClickListener {

// 写你需要的东西

}

下面这个是kotlin的写法,相对于上面那个清爽了很多。这也是lambda的优势之一。

kotlin的条件控制,在一周之前我有一个程序的大致想法,这个程序是关于做一个有界面的计算器,类型和我们市面上见到的计算器一致。

但是由于我没有学习太多kotlin的知识,这个计划一直在鸽这,然而今天学习的是条件语句。看到这个我们应该可以联想到之前做的计算器程序的一些逻辑,

kotlin条件控制:

kotlin包含if-else 表达式 , when表达式, when表达式增强版,when替代多级嵌套的if-else语句

if-else:

kotlin的if语句和Java的if语句相似但是不同的,在kotlin中,if语句是一个表达式,所以会返回一个值,表达式的值

为表达式作用域内最后一行的值,这一点和java是不同的,而java的if仅仅是个语句。同样存在这else-if语句。

when:

koltin中使用when来替代了java中的switch-case语句

when同样是带返回值的。when将它的参数与所有的分支条件顺序比较,知道分支满足条件。

增强版:

kotlin1.3以后对when表达式做了语法增强,支持,when表达式的内部允许传入值。

多级嵌套:

和if一样,when也有返回值,对于座机嵌套,建议使用when。

这边我们直接看代码吧:

package com.example.firstapp

fun main() {
println("maxof:${maxof(5,4)}")
println("maxof2:${maxof2(5,4)}")
} fun maxof(a:Int,b:Int):Int{
if(a>b)
{
return a;
}
else
{
return b;
}
}
//maxof的简易写法。
fun maxof2(a:Int,b:Int):Int
{
return if(a>b) a else b
} //when:
//fun eval12(number:Number):String=when (number)
//{
// is Int -> "this is Int"
//}

  

kotlin循环语句:

其中包括

1.for循环

2.while和do-while循环

3.迭代区间

4.break和contine

for循环:

for循环可以对任何提供迭代器(可以理解为我们所学的字典)的对象进行遍历,for循环仅以唯一一种形式存在,和java和for-each循环一致。

在CSDN中,有人说kotlin循环和java中的循环几乎一模一样,但是我觉得kotlin的for循环更像python的for循环一样(也许是我学的太少,或者思维面没有达到的缘故,所以感觉会更像python一些)

while和do-while语句:

我们直接通过代码来学习while

迭代区间:

遍历区间,注意kotlin的区间的包含或是闭合的。

我们还是用代码来表示

package com.example.firstapp

fun main()
{
val items = listOf("java","kotlin","android")
//第一种方式,for-in形式
for(item in items)
{
println(item)
}
//foreach:可以打印元素
items.forEach(){items ->
println("forEach:${items}")
}
//可以输出每个元素的下标
items.forEachIndexed{index,items->
println("forEachIndexed:${index},${items}")
} //区间迭代器
for (i in 1..10) //这里的1..10是这样意思,我们将1到10这几个数都遍历一遍。其实
//我们也可以用until来写。
//这里我们可以这样用数学来表示:[1,10]
{
print(i)
}
print("\n")
for (i in 1 until 10 step 2) //until不会输出最后一个数,如果我们用数学来表达它的
//话,因该是这样的[1,10)
//kotlin的一个简便的关键字,如果你想让你的输出是一个隔着一个的
//输出,也就是我这样输出1,3,5,...
//如果是这样的话,我们用其他语言来写就需要在循环中加一个判断,
//但是在kotlin中我们只需要用step这个关键字就可以解决了
{
print(i)
}
}

  

以上是我这周学习的一个总结,写的不知道有没有什么问题,如果有问题,请一定要提出来,我会马上改的,谢谢你的观看!!!!

关于我第二周学习kotlin这门语言的更多相关文章

  1. 201521123038 《Java程序设计》 第二周学习总结

    201521123038 <Java程序设计> 第二周学习总结 1.本章学习总结 学会在Java程序中使用函数,使程序层次更清晰 使用StringBuilder编写代码,减少内存空间的占用 ...

  2. 201521123093 java 第二周学习总结

    201521123093 <java程序设计> 第二周学习总结 一.第二周学习总结 答:(1)关于进一步使用码云管理代码,本周才真正学会了如何将Eclipse里的代码上传到码云中,并且能够 ...

  3. 201521123011 《Java程序设计》 第二周学习总结

    1. 本周学习总结 记录本周学习中的重点 原则:少而精,自己写.即使不超过5行也可,但请一定不要简单的复制粘贴. 知道了c语言中string的定义与java不同的地方. 学习了枚举,数组等方法 Tnt ...

  4. 20145326《Java程序设计》第二周学习总结

    20145326<Java程序设计>第二周学习总结 教材学习内容总结 本周学习教材第三章,本章主要讲述了java语言中的一些基础语法,java是个支持面向对象的程序语言,但在正式进入面向对 ...

  5. 王颖奇 201771010129 《面向对象程序设计(java)》第二周学习总结

    <面向对象程序设计(java)>第二周学习总结 王颖奇 201771010129 第一部分:实验目的与要求 ①理论部分目的与要求 (1)基本知识(2)数据类型(3)变量(4)运算符(5)类 ...

  6. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  7. 20145330孙文馨 《Java程序设计》第二周学习总结

    20145330孙文馨第二周学习总结 第二周相比于第一周对java语言有了深一点的了解,也意识到多敲代码才是学习计算机语言的最好方法. 教材内容总结 类型.变量与运算符 *基本类型 整数(short. ...

  8. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  9. 20135328信息安全系统设计基础第二周学习总结(vim、gcc、gdb)

    第三周学习笔记 学习计时:共8小时 读书:1 代码:5 作业:1 博客:7 一.学习目标 熟悉Linux系统下的开发环境 熟悉vi的基本操作 熟悉gcc编译器的基本原理 熟练使用gcc编译器的常用选项 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. java 实现N进制转M进制

    1. 把10进制转成N进制:除N取余,逆序排列 这里逆序排列使用StringBuilder类的reverse()函数来实现.   /**    * 10进制整数转换为N进制整数. 10进制转换为N进制 ...

  2. IntelliJ IDEA生成jar包运行报Error:A JNI error has occurred,please check your installation and try again

    首先介绍一下IntelliJ IDEA生成jar包的方式: 1.打开项目,打开FIile->Project Structure...菜单.如下图: 选中Artifacts,点+号,选择JAR,再 ...

  3. JVM故障分析及性能优化系列之四:jstack生成的Thread Dump日志线程状态

    https://www.javatang.com/archives/2017/10/25/36441958.html JVM故障分析及性能优化系列文章 JVM故障分析及性能优化系列之一:使用jstac ...

  4. CH32V203F6P6-TSSOP20测试之02---点灯成功

    一.问题思考 直接用官方提供的例程,为何下载程序后没有什么响应,难道自己设计的电路有什么不妥? 于是,对于电路进行具体分析,结果发现: 第一.官方的BOOT0采用杜邦线连接,在芯片手册好像找不到关于B ...

  5. 画(HB To Ryby!)

      "客人,请描述得具体一点."   他似乎还是很难为情.   "呃--就是--一个女孩儿",他又勉强启开嘴,"女孩儿"三个字几乎被咽进嗓子 ...

  6. Solution -「NOI 2017」「洛谷 P3826」蔬菜

    \(\mathscr{Description}\)   Link.   原题意比较简洁了.注意一下卖出的菜也会变质,且让它们代替未卖出的菜变质是更优的. \(\mathscr{Solution}\) ...

  7. java基础知识回顾之java Thread类学习(三)--java多线程通信等待唤醒机制(wait和notify,notifyAll)

    1.wait和notify,notifyAll: wait和notify,notifyAll是Object类方法,因为等待和唤醒必须是同一个锁,不可以对不同锁中的线程进行唤醒,而锁可以是任意对象,所以 ...

  8. 项目PMP之五项目范围管理

    项目PMP之五--项目范围管理   一.定义:确保项目做且只做所需的工作:范围包括产品范围(特性和功能)和项目范围(交付产品所需完成的工作) 适应型生命周期:相关方持续参与,应对大量变更(敏捷),实时 ...

  9. Kotlin:【对象】object关键字、对象表达式、伴生对象、嵌套类、数据类、copy、解构声明、使用数据类的条件、运算符重载、枚举类、代数数据类型、密封类

  10. 重试机制与 CompletableFuture 拓展

    重试机制与 CompletableFuture 拓展 禁止转载. 本文旨在讨论重试机制的特点和策略,分析常用重试类库的实现,讨论为 CompletableFuture 添加重试机制的方法.文章首发同名 ...