Kotlin从入门到放弃之基础篇(二)——包和控制流
来源:互联网 发布:极路由网络唤醒 编辑:程序博客网 时间:2024/06/10 18:15
Kotlin从入门到放弃之基础篇(二)
写在前面的乱七八糟的话:此为Kotlin学习路上的第三篇文章,希望各位大神不吝赐教,
包
源文件从包的声明开始的:
package demo fun main(args : Array<String>){ val b = arrayOfNulls<Int>(4) b.set(0,2) println(b[0]) }
源文件中的所有声明都被包声明包括。如果没有指定包名,则这个文件的内容从属于默认的”Default”包
♣ 我们通过”import”关键字来完成倒入指令
import demo.UserBean //倒入一个单独的名字 import demo.* //倒入kotlin下所属的所有内容
如果存在命名冲突
import demo.UserBean //daoru UserBean import test.UserBean as User //User代表testUserBean
♣ 可见性和包嵌套:如果最顶层的声明标注为private,那么它自己对应包私有。如果包内有私有 属性或方法,那么他对所有的子包是可见的,包外的成员默认是不倒入的,即倒入demo.UserBean后不能直接使用demo.PersonBean
控制流
if
在Kotlin中,if是可以作为一个表达式的。是除了condition?then:else之外的唯一一个三元表达式。
//传统的用法,和Java中相似 var max= a if(a < b) max=b //带else var max : Int if(a < b) max=b else max=a //作为一个三元表达式 val max = if(a > b) a else b
if表达式中的分支可以作为块,最后一表达式为该块的值
val max =if(a > b){ print("这是分支") a }else{ print("这也是分支") b }
如果if只有一个分支,或其分支返回的结果为Unit则其值为Unit
when
与Java相比,在Kotlin中用when取代了switch。简单来说:
fun testWhen(x : Any){ when(x){ 1 ->print("this is num") "1" ->print("this is string") "English" -> print("this is English") else{ print("this is shit") } } }
when 会检查所有的分支知道有一个条件满足。when同样可以用作表达式或者声明。作为表达式时,满足条件的表达式即为总的表达式,当用作声明时分支的值会被忽略(像 if 表达式一样,每个分支是一个语句块,而且它的值就是最后一个表达式的值)。例如:
fun testWhen(x :Any):String{ var a = when(x){ 1-> 1 //表达式有参数 in 1..10-> "在1~10的区间内" //表达式无参数 is String ->"为 String" //可以用任意条件作为表达式分支 else{ print("默认情况") "sx" } } return a }
由上述代码可以看出,当when表达式有参数时实现了Java中的switch的效果,当when表达式无参数时实现了Java中的if else if语句的效果
注意:when语句与密封类可以一起使用而不需要写else分支。
for
在遍历某个队列时,Koglin中的for循环与Java中不同的是:Java通过”for(item : list)” 而Kotlin中则是使用”for(item in list)” .例如:
var strArray:Array<String> =arrayOf("这是1","这是2","这是3") for(i in strArray){ print("$i,\n") }
另一方面,Kotlin废除了”for(初始;条件;增减)”这个规则,若要实现该功能则应为”for(i in array.indices)” 其中indices表示该数组对象的下标数组,所以上面代码可以改为:
var strArray:Array<String> = arrayOf("这是1","这是2","这是3"); for(i in strArray.indices){ print("${strArray[i]} \n") }
while
Kotlin将Java中的while保留了下来,同时do/while也和Java中的用法相同,在这里不进行过多赘述。
循环中的break和continue
Kotlin保留了Java中的break和continue关键字。但同时Kotlin中可以为表达式添加标签,两者结合可以产生一些新的变化。例如:
fun test(){ val strList:Array<String> = arrayOf("这是1","这是2","这是3") val intList:Array<Int> = arrayOf(1,2,3) demo@ for(j in intList){ print("$j \n") for(i in strList.indices){ if(i===0) print("${strList[i]} \n") if(i===1) break@demo//此处会跳转出外层循环(即:打破了break只能跳出当前循环的限制) if(i===2) print("${strList[i]} \n") } } }
此处只做一个最简单的例子,关于标签的应用,后面的文章中会详细讨论。
- Kotlin从入门到放弃之基础篇(二)——包和控制流
- Kotlin从入门到放弃之基础篇(三)——类和继承
- Kotlin从入门到放弃之基础篇(一)——基本数据类型
- Kotlin从入门到放弃之基础篇(四)——属性、字段、接口
- Kotlin从入门到放弃之基础篇(五)——修饰词、扩展、数据类
- kotlin——从入门到放弃
- Kotlin从入门到放弃之基础篇(六)——泛型、嵌套类、枚举类、对象表达式
- Kotlin从入门到放弃之准备篇——基本语法
- Kotlin从入门到放弃(三)——协程
- Kotlin基础(二)——包、控制流、返回和跳转
- Kotlin从入门到“放弃”(一)
- spark从入门到放弃 之 分布式运行jar包
- Docker 从入门到放弃(二)之Spring Boot
- OpenCV从入门到放弃(二):架构和上手
- 【Kotlin从入门到深坑】之基础类型
- Kotlin从入门到『放弃』系列 视频教程
- Kotlin从入门到『放弃』系列 视频教程
- Git从入门到放弃——Git命令篇
- 叶俊:能量获取的秘籍-奇文
- 嚼得菜根做得大事·《菜根谭》·四
- ARC下的内存管理
- Wireshark 抓包分析 RTSP/RTP/RTCP 基本工作过程
- 实现android上传多张图片和文字给php后台
- Kotlin从入门到放弃之基础篇(二)——包和控制流
- 2017-09-19HTML基本标签
- 其他-poi的使用(操作excel表格)
- Struts2配置文件
- mysql死锁,可视化工具无法操作
- HDU 3336 Count the string 所有前缀在串中的出现总次数
- TCP的三次握手和四次挥手的过程?三次握手改成两次或者四次可以吗为什么?
- JavaWEB中request.getRequestURI()、getRequestURL()、getContextPath()、getServletPath()区别
- stm32在rt-thread上使用uart4实现gps的输出