-
包package不需要和类的位置对对齐,但是按照编码规范,应该对齐
-
定义函数,
fun funName(a:Int, b:Int):Int{ return a+b}
或者
fun sum(a:Int, b:Int) = a+b
-
定义局部变量和声明
val只读,相当于final修饰 var可读写 val a:Int = 1 //正确 val b = 2 正确 val c:Int c = 3 //正确 val d d = 4//错误
-
字符串模版
使用${variableName}来做字符串模版,类似一些CMS框架template比如django
-
条件表达式
fun max(a:Int, b:Int) = if(a>b) a else b
-
空指针检查
函数返回值可空 fun parseInt(str:String):Int?{ } 表达式可空 val name:String = person?.name ?: "" 如果不为空? val name: String = person?.name ?: "" 如果为空 ?: val name: String = person?.name ?: ""
-
类型检查自动转换
fun getStringLength(obj:Any):Int?{ if(obj is String){ return obj.length } return null } fun getStringLength(obj:Any):Int?{ if(obj !is String){ return null } return obj.length }
-
for循环
val items = listOf("apple","orange","pear") for(item in items){ println(item) }
或者是带有index的遍历
val items = listOf("apple","pear","orange") for(inex in items.indices){ println("${items[index]}") } for((index,val) in items.withIndex()){ println("$index-->$val") }
-
when表达式
fun getStringContent(obj:Any):String = when(obj){ 1->"one" "hello"->"greety" is Long->"long number" !is String->"not a string" else ->"unknow content" }
-
range类似python
val a = 5 val b = 5 in 0..10 for(x in 1..10 step 2){ println(x) } for(x in 10 downTo 0 step 2){ println(x) } for(x in 1 until 10){//不包括10 println(x) }
-
数据类POJO类
data class Person(var name:String, var age:Int)
-
过滤lsit
val list = listOf(-1,-2,0,1,2,3) val positive = list.filter{it > 0}
-
遍历map类似php和python
val map = mapOf{"a" to 1,"b" to 2} for((key,val) in map){ println("$key --> $val") }
-
构建只读的lsit和map,arry
listOf(1,2,3) mapOf("a" to 1, "b" to 2, "c" to 3) arrayOf(1,2,3)
-
懒加载(延迟加载)
val p : String by lazy{ //compute the string value }
-
扩展函数
fun String.spaceToCamelCase(){ } 给String类拓展了一个方法,所有String类都可以使用该方法。原理不是在String中新建了一个方法,而且根据表达式来决定的调用
-
创建单例
object Resource{ val name = "name" } 使用伴随对象来创建单例模式 class Manager private constructor(){ companion object{ val INSTANCE:Manager by lazy (mode=LazyThreadSafetyMode.SYNCHRONIZED){ Manager() } } }
-
with调用一个对象实例的多个成员方法和成员变量
class Person{ fun eat() fun sing() fun drink() } val me:Person = Person() with(me){ eat() drink() sing() }
-
可能为空的Boolean
val b:Boolean? = isMe() if(b == ture){ }else{ //b为空或者false }
-
基本类型Byte、Short、Int、Float、Double、Long、String。不支持8进制
-
类型转换
不支持低类型转高类型,与java不同, val a:Int = 1 var b:Long = a //错误 显示转换 val a:Int = 1 var b:Long = a.toLong() 隐式转换 val a:Int = 1 val b:Long = 2 var c = a+b //转成Long
Kotlin笔记(基础语法)
最新推荐文章于 2024-04-28 13:41:48 发布