kotlin基本语法(自学基础--备忘I)

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 properties
lateinit 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

你可能感兴趣的:(移动开发,java)