
目录
1.Kotlin语中的Map的创建
2.Kotlin语中的读取Map的值
3.Kotlin语言遍历Map学习
4.Kotlin语言的可变Map集合学习
5.Kotlin语言定义类与field关键字学习
6.Kotlin语言的计算机属性与防范条件
7.Kotlin语言的主构造函数学习
8.Kotlin语言的主构造函数里定义属性
9.Kotlin语言的次构造函数学习
10.Kotlin语言的构造函数中默认参数学习
1.Kotlin语中的Map的创建
// TODO 65 Kotlin语中的Map的创建
fun main() {
val mMap1 : Map = mapOf("Bxb" to 45.2,"Wuwu" to 12.3)
val mMap2 = mapOf(Pair("Bxb",78.9), Pair("Wuwu",14.2))
println(mMap1)
println(mMap2)
}
2.Kotlin语中的读取Map的值
// TODO 66 Kotlin语中的读取Map的值
//方式一:[] 找不到会返回null
fun main() {
val mMap = mapOf("Bxb" to 123,"Wuwu" to 456)
//方式一:[] 找不到会返回null
println(mMap["Bxb"])
println(mMap["Wuwu"])
println(mMap.get("Bxb")) // get 与 [] 完全等价
println(mMap["XXX"]) //找不到返回null
println()
//方式二 getOrDefault
println(mMap.getOrDefault("Bxb",-1))
println(mMap.getOrDefault("Bxb2",-1))
//方式三 getOrElse
println(mMap.getOrElse("Bxb") {-2})
println(mMap.getOrElse("Bxb2") {-2})
println()
//方式四 getValue 与 Java 一样 会崩溃,尽量不使用这种方式
println(mMap.getValue("Bxb"))
//println(mMap.getValue("bb"))
}
3.Kotlin语言遍历Map学习
// TODO 67 Kotlin语言遍历Map学习
fun main() {
val map = mapOf(Pair("Bxb",33), Pair("Wuwu",66))
//第一种方式
map.forEach {
// it 内容 每一个元素(K 和 V) 每一个元素(K 和 V) 每一个元素(K 和 V)
//it 类型 Map.Entry
println("K:${it.key},V:${it.value}")
}
println()
//第二种方式:
map.forEach { key : String, value : Int -> //吧默认的it给覆盖了
println("key:$key,value:$value")
}
println()
//第三种方式
map.forEach { (k, v) ->
println("k:$k,v:$v")
}
//第四种方式
for (item : Map.Entry in map){
// item 内容 每一个元素(K 和 V) 每一个元素(K 和 V) 每一个元素(K 和 V)
println("key:${item.key},value:${item.value}")
}
}
4.Kotlin语言的可变Map集合学习
// TODO 68 Kotlin语言的可变Map集合学习
fun main() {
//1.可变集合的 *** 作 += [] put
val map : MutableMap = mutableMapOf(Pair("Bxb",111),Pair("Wuwu",222))
//下面是可变 *** 作
map += "aaa" to 111
map += "aaaa" to 1111
map -= "aaa"
map["cc"] = 99
map.put("dd",55) //put 和 [] 等价的
map.forEach {
println("k:${it.key},v:${it.value}")
}
//2.getOrPut 没有的情况
//如果整个map集合里面没有 FFF 的key 元素,就添加到map集合中去
var r : Int = map.getOrPut("eee") { 66 }
println(r)
println(map["eee"]) //已经将eee添加进去了,所以可以获取
//3.getOrPut 有的情况
val r2 = map.getOrPut("Bxb") {666} //发现Bxb有值,那么就直接获取原来的值,666失效
println(r2)
}
5.Kotlin语言定义类与field关键字学习
// TODO 69 Kotlin语言定义类与field关键字学习
public class aa{
var name = "Derry"
var value = "ABCDEF"
var info = "bxb is a hansome boy"
}
fun main() {
println(aa().name)
println(">>>>>>>>>>>>>>>>>>>>>>>.")
println(aa().info)
println(aa().value)
}
6.Kotlin语言的计算机属性与防范条件
// TODO 70 Kotlin语言的计算机属性与防范条件
class bb {
val number: Int = 56
val number2: Int
get() = (1..1000).shuffled().first() //从1到1000取出随机数 返回给getNumber2()函数
val info: String? = "aaa"//null//""
//防范竞态条件 当你调用成员,这个成员,可能是null,可能为空值,就必须采用防范竞态条件,这是kt编程的规范化
fun getShowInfo(): String {
//这个成员,可能是null,可能为空值,就必须采用防范竞态条件
return info?.let {
if (it.isBlank()) {
"info你原来是空啊!!"
} else {
"最终info结果为:$it"
}
} ?: "info你是null"
}
}
fun main() {
println(bb().number)
println(bb().number2)
println(bb().getShowInfo())
}
7.Kotlin语言的主构造函数学习
// TODO 71 Kotlin语言的主构造函数学习
// 主构造函数:规范来说,都是增加_xxx的方式,临时的输入类型,不能直接用,需要接收下来,成为变量才能用
// _name 等等,都是临时的类型,不能直接用,需要转化一下才能用
class cc(_name:String,_sex:Char,_age:Int){ //主构造函数
var name = _name
var sex = _sex
var age : Int = _age
fun show(){
println(name)
println(sex)
println(age)
}
}
fun main() {
val p = cc(_name = "bxb",_sex = '男',_age = 22)
p.name = "aaa"
p.show()
}
8.Kotlin语言的主构造函数里定义属性
// TODO 72 Kotlin语言的主构造函数里定义属性
class dd(var name :String ,val sex : Char,val age : Int){
fun show(){
println(name)
println(sex)
println(age)
}
}
fun main() {
val p = dd(name = "bxb",sex = '男',age = 22).show()
}
9.Kotlin语言的次构造函数学习
// TODO 73 Kotlin语言的次构造函数学习
class ee(name : String){
//次构造函数必须要调用主构造函数,否则不通过。 原因:主构造统一管理,为了更好地初始化设计
constructor(name : String,sex : Char) : this(name){
println("2个参数的次构造函数:name:$name,sex:$sex")
}
constructor(name : String,sex : Char,age:Int) : this(name){
println("3个参数的次构造函数:name:$name,sex:$sex,age:$age")
}
}
fun main() {
val p = ee("bbb")
ee("bxb",'n')
ee("bxb",'n',22)
}
10.Kotlin语言的构造函数中默认参数学习
// TODO 73 Kotlin语言的构造函数中默认参数学习
class ff(name : String = "bbb"){
//次构造函数必须要调用主构造函数,否则不通过。 原因:主构造统一管理,为了更好地初始化设计
constructor(name : String = "bbb",sex : Char = 'n') : this(name){
println("2个参数的次构造函数:name:$name,sex:$sex")
}
constructor(name : String = "www",sex : Char = 'm',age:Int = 22) : this(name){
println("3个参数的次构造函数:name:$name,sex:$sex,age:$age")
println(this)
}
}
fun main() {
val p = ee("bbb")
ff("bxb",'n')
ff("bxb",'n',22)
println(ff()) //优先调用主构造函数
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)