在学习Kotlin 过程中发现做了很优化,在语法书写上Kotlin 做了很多考虑,总结下
- 变量非空与空,在声明一个变量的时候,默认是不允许变量为空
var name:String=null;//编译不过
如果想编译通过就需要显示声明,变量类型加?操作符
var name:String?=null;//编译过
- 类或者方法修饰符,私有或者公开
class JiSuan {
public fun sun() {
}
private fun sun1() {
}
}
在类的声明中,没有类似Java中public修饰,因为在Kotlin 中已经默认Kotlin ,不需要加,如果自己方法或者类需要私有,那么加private
总结 Kotlin 中已经对语法熟悉做了优化,同样在集合中,也存在集合是否为空,是否可变
Kotlin 集合
- 集合与可空性
//声明一个空的集合,空的集合
var list=ArrayList<String>()
//声明一个空的集合,并且元素可以为空/null
var list1=ArrayList<String?>()
- 只读集合和可变集合
listOf 可读集合或者不可变集合,集合拥有数组for循环的特性,forEach 方法,和get方法,没有set方法,因为不可变得,但是如果是可变集合是有set方法的
//可读数组,for循环
var lists = listOf<String>("光模块", "网线", "跳线", "路由")
for (item in lists)
Log.i("item->", item)
for (index in lists.indices)
Log.i("index->", index.toString())
lists.forEach { item -> Log.i("forEach=",item) }
lists.get(0)
mutableMapOf map可读不可变,可读map跟可读list一样没有add方法,也会存在跟list一样for循环方法
//只读
var map= mapOf("name" to "xiaoming")
//创建一个可变的map
var map1=HashMap<String,String> ()
map1.put("name","mm")
//创建一个可变的map
var map2=mutableMapOf(Pair("name","xiaoming"));
// 使用forEach遍历
goodsMap.forEach { key, value ->
println(key)
println(value)
在实际开发项目过程中,我们用list跟map数据结构比较多一些,当然像list和map一些其他方法,排序过滤我们都没学到,只是做了介绍,开发过程中多数是Kotlin 跟Java混合开发,目前Kotlin 的生态还没有完全,包括第三方插件,第三方库可能还是痛的Java来实现的,所以必然会处在互相调用情况,建议在Kotlin 中所有list或者map声明全都用可变声明方式
- 集合与数组互相转化
fun main(args: Array<String>) {
//声明一个数组
val array1 = arrayListOf("str1", "str2", "str3")
//将数组转化为集合
val list1 = array1.toList()
//将集合转化为数组
val array2 = list1.toTypedArray()
}
- 补充
list 中的方法统一适用数组
list.remove() //移除某个元素
list.reverse()//翻转集合
list.size //长度
list.add() //新增元素
list.toArray() //转换数组
list.contains() //是否包含某个元素