博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kotlin基本语法(自学基础--备忘I)
阅读量:6094 次
发布时间:2019-06-20

本文共 3068 字,大约阅读时间需要 10 分钟。

1、!!(表示当前对象不为空的情况下执行,使用此符号的对象在出现null的情况是,会抛出异常)

2、?(可以为null,对象值为null时不会抛出异常) var str:String?=null

3、方法扩张(例如:Long.toString(l:Long):String)

4、in 在什么范围?in 不在什么范围之内 fun isLetter(c: Char) = c in 'a'..'z' //判断c是否在a-z区间 fun isNotDigit(c: Char) = c !in '0'..'9' //不在这个0到9区间

5、is 是否是某种类型(类似java中instanceof) ?is(不是某种类型,与is相对)

6、as强制类型装换 ?as强制类型转换,如果转换失败则返回null,不会抛异常

7、var 定义变量,变量值可修改 val定义变量 变量值不可修改(类似java中的final)

8、字符串模板,表示将后面的变量值、方法返回值放在此处使中 ( val str : String = "自学kotlin中" println("最近在干啥呢$str") )

9、when语法(和java中的switch case default 类似) kotlin代码 fun faceScoreDescn(score:Int):String{ var descn:String; when(score){ 10 -> descn = "令人惊艳的帅(美)" 9 -> descn = "令人着迷的帅(美)" 8 -> descn = "帅哥(美女)" 7 -> descn = "有点帅(漂亮)" 6 -> descn = "中等水平" else -> descn = "其貌不扬" } return descn } java代码 public String faceScoreDescn(int score){ String descn=null; switch(){ case 10: descn = "令人惊艳的帅(美)"; break; case 9: .....

default   descn = "其貌不扬"} return descn复制代码

}

10、override: 父类方法

11、fun: 方法声明

12、有返回值的方法的多种写法 //有返回值 fun sum(a: Int,b: Int): Int{ retrun a + b }

//等同于 fun sum(a: Int,b: Int) :Int = a + b

//等同于 fun sum(a: Int,b: Int) = a + b

fun maxOf(a: Int, b: Int): Int { if (a > b) { return a } else { return b } }

//等同于 fun maxOf(a: Int, b: Int) = if (a > b) a else b

13、Unit表示方法没有返回值,Unit概念上相当于Java中的Void,当然也可以不写

fun showMsg(msg:String):Unit{ println(msg)//在logcat中可看到打印出的内容 } fun showMsg(msg:String){ println(msg)//在logcat中可看到打印出的内容 }

14、覆盖的规则 open class A { open fun f() { print("A") } fun a() { print("a") } } interface B { var name: String //属性在接口中不可以被赋值,需要子类重写 fun f() { print("B") } // 接口的成员默认是 'open' 的 fun b() { print("b") }

} class C() : A(), B { override var name: String = "c" // 编译器要求 f() 方法必须覆盖: override fun f() { super.f() // 调用 A.f() super.f() // 调用 B.f() } }

15、初始化一个list val food = listOf("orange", "apple", "bear", "tomato")//这种方式只读

16、字符串String 原生字符串(raw string)由三重引号表示( """ ), 其内容不转义, 可以包含换行符和任意字符

val text = """           for(c in "foo")           print(c)           """    println(text)复制代码

三个双引号包裹的字符串 内容 格式不变

val text = """           |for(c in "foo")           |print(c)           """.trimMargin("|")    println(text)复制代码

17、位运算

18、相等操作符

19、修饰符 private 表示只在这个类(以及它的所有成员)之内可以访问; protected — 与 private 一样, 另外在子类中也可以访问; internal — 在 本模块之内, 凡是能够访问到这个类的地方, 同时也能访问到这个类的 internal 成员; public — 凡是能够访问到这个类的地方, 同时也能访问这个类的 public 成员.

在 Kotlin 中, 外部类(outer class)不能访问其内部类(inner class)的 private 成员

20、lateinit

那如果在定义变量时(例如定义成员变量),又想该变量不为空,又不想在定义时就初始化要怎么办呢?使用lateinit关键字

lateinit var test:String //正确 lateinit val test:String //错误 lateinit var test:Float //错误 关于lateinit关键字的使用限制:

lateinit modifier is allowed only on mutable propertieslateinit modifier is not allowed on primitive type properties复制代码

可见,lateinit修饰符只能修饰不可空类型,并且不允许修饰基础类型(四类八种基础类型int, double,boolean等)。

21、for循环 java:

for(int i =0; i < 5; i++) { }

kotlin:

for(i in 0..4) { }

for (item in listData) { //遍历列表,直接操作列表内的对象 item.method() }

for (i in listData.indices) { //遍历列表带行index }

for((i, item) in list.witnIndex()) { //加强版 }

listData.forEach { it.method() } //变种的for循环

转载于:https://juejin.im/post/5b8795e66fb9a019f18019cf

你可能感兴趣的文章
Cookie简介
查看>>
sublime text3 中 CTags: Rebuild Tags执行之乱码解决方法
查看>>
js的几种sleep函数
查看>>
跨域问题及解决方案
查看>>
每日任务1
查看>>
全局注入SplashActivity界面框架。支持首次打开App开屏界面#再进程存活的情况下从后台进入前台注入开屏界面#再进程存活的情况下锁屏再亮屏进入开屏界面...
查看>>
如何不花钱实现简单的短信验证功能
查看>>
结合element-ui 的el-upload组件支持分片上传
查看>>
Kotlin超简单实现StepView
查看>>
Flutter开发环境配置
查看>>
使用vr-panorama生成一个vr全景漫游系统(一)
查看>>
【前端】书客编辑器Web版v1.0
查看>>
Python3内置模块之pprint让打印比print更美观
查看>>
学习ES6新语法
查看>>
微服务实战(九):落地微服务架构到直销系统(回顾总结)
查看>>
Django+Vue.js搭建前后端分离项目 web前后端分离项目实践
查看>>
什么是7层负载均衡?
查看>>
区块链之区块链是什么?图解区块链+技术要点+应用领域
查看>>
从0到1玩转大数据 【Mysql基础篇 - Mysql安装】
查看>>
python—re、XPath
查看>>