现阶段初学kotlin,其实之前也开始学过一段时间,不过没总结,忙过一阵之后忘得也差不都了,先不是很忙,慢慢的捡起来。本篇博客慢慢更新:希望又不准确的地方各位看官请指出,多多指教
val 声明不可变变量
var声明可变变量
?:表示当前是否对象可以为空
!!: 表示当前对象不为空的情况下执行
eg:
val l = b!!.length//如果b不为空,则返回b.length,如果b为空,则抛出异常NullPointerException
?. 安全调用符
?:Elvis 操作符 eg:
val l = b?.length?:-1//当b不为空时,返回b.length,当b为空时,返回-1
filterNotNull
如果你有一个可空类型元素的集合,并且想要过滤非空元素,你可以使用 filterNotNull 来实现
val nullableList: List<Int?> = listOf(1, 2, null, 4)
val intList: List<Int> = nullableList.filterNotNull()
$符号
------------java------------
String baseUrl = "http://www.baidu.com/"
String imageUrl = baseUrl+"?page=1&size=10"//当然这些数字不能写死,一般我们都是添加在FormBody中的
------------kotlin-------------
val imageUrl = "$baseUrl?page=$page&size=$size
==和===
==判断值是否相等,===判断值及引用是否完全相等。
..区间
区间(或叫作范围)表达式由具有操作符形式 .. 的 rangeTo 函数辅以 in 和 !in形成
if (i in 1..10) { // 等同于 1 <= i && i <= 10 println(i) }
//使用until函数,创建一个不包括其结束元素的区间
for (i in 1 until 10) { // i in [1, 10) 排除了 10 println(i) } //如果你想倒序迭代数字呢?也很简单。你可以使用标准库中定义的 downTo() 函数
for (i in 4 downTo 1) print(i) // 输出“4321” //能否以不等于 1 的任意步长迭代数字? 当然没问题, step() 函数有助于此
for (i in 1..4 step 2) print(i) // 输出“13” for (i in 4 downTo 1 step 2) print(i) // 输出“42”
_
data class Book(var id: Int, var name: String)
Book声明了 id,name两个变量。解构时如果只需要id这一个变量时
val book = Book(1, "英语")
val (id, _) = book
:: 得到类的class对象
/得到类的Class对象
startActivity(Intent(this@KotlinActivity, MainActivity::class.java))
@
1、限定this的类型
class User
{ inner class State{ fun getUser(): User{
//返回User return this@User }
fun getState(): State{
//返回State return this@State } } }
2、跳出循环
loop@ for (itemA in arraysA) {
var i : Int = 0
for (itemB in arraysB)
{ i++ if (itemB > 2) {
break@loop }
println("itemB:$itemB") } }
3、命名函数自定义标签
fun fun_run(){
run { println("lambda") } var i: Int = run { return@run 1 } println("$i") //匿名函数可以通过自定义标签进行跳转和返回 i = run (outer@{ return@outer 2 }) println(i) }