@[TOC]
1.map使用
fun map(){
//1,声明对象
val binaryReps=TreeMap()
//2,赋值
for (c in 'A'..'H'){
val binary=Integer.toBinaryString(c.toInt())
binaryReps[c]=binary
}
//3,遍历
for ((letter,binary)in binaryReps){
println("$letter=$binary")
}
输出结果
A=1000001
B=1000010
C=1000011
D=1000100
E=1000101
F=1000110
G=1000111
H=1001000
2.类的使用
1,成员也可以计算得出
2,成员可以定义在构造中
3,构造中也可以添加修饰符
fun main(args: Array) {
//新建一个矩形
val rectangle = Rectangle(5, 5)
println("宽:${rectangle.width}\n${rectangle.isRectangle}\n${rectangle.describe}")
}
/**
* 定义矩形对象
* @param width 宽
* @param height 高
* */
class Rectangle(val width: Int, private val height: Int) {
//是否为下方形
val isRectangle: Boolean get() = width == height
//描述
val describe: String
get() {
return when (width) {
height -> "正方形"
else -> "长方形"
}
}
}
输出结果
宽:5
true
正方形
3.Set List Map
fun setListMap() {
val set = hashSetOf(1, 3, 5)
val list = arrayListOf(4, 5, 6)
val map = hashMapOf(7 to "aaa", 8 to "bbb", 9 to "bbb")
println(set.toString())
println(list.toString())
println(map.toString())
}
输出结果
[1, 5, 3]
[4, 5, 6]
{8=bbb, 9=bbb, 7=aaa}
4.重载方法
重载方法,如果参数中已经给默认値调用时可以不传
//调用
val list = listOf(1, 2, 3, 4)
joinToString(list, ",")
joinToString(list)
/**
* 重载方法,如果参数中已经给默认値调用时可以不传
*/
fun joinToString(collection: Collection, separator: String=":"): String {
val sb = StringBuilder()
for ((index, element) in collection.withIndex()) {
sb.append(element)
sb.append(separator)
}
println(sb.toString())
return sb.toString()
}
输出结果
1,2,3,4,
1:2:3:4:
5.可变参数
//调用
setVararg("AAA","BBB","CCC")
//可变参数关键字vararg
fun setVararg(vararg content:String){
for(s in content){
println(s)
}
}
输出结果
AAA
BBB
CCC
6.中缀的调用
pair(Pair("你好吗?", "我很好"),Pair("你在哪?", "在杭州"))
fun pair(vararg values: Pair) {
val (number, name) = 1 to "one"
println("$number+$name")
for (pair in values) {
println("${pair.first}>>${pair.second}")
}
}
输出结果
1+one
你好吗?>>我很好
你在哪?>>在杭州
7.三重引号
在三重引号中特殊字符不需要转义
val path = "User/yang/kotlin/chapter.adoc"
parsePath(path)
fun parsePath(path: String) {
val regex="""(.+)/(.+)\.(.+)""".toRegex()
val matchResult=regex.matchEntire(path)
if (matchResult != null) {
val(directory,fileName,extension)=matchResult.destructured
println("$directory---$fileName---$extension")
}
}
输出结果
User/yang/kotlin---chapter---adoc
8.局部函数
val user = User(100, "张三", "杭州")
saveUser(user)
/**
* 局部函数
*/
class User(val id: Int, val name: String, val address: String)
fun saveUser(user: User) {
//局部函数,统一检查
fun validate(value: String, fieldName: String) {
if (value.isEmpty()) {
throw IllegalArgumentException("Can't save ${user.id} empty $fieldName")
}
}
validate(user.name, "name")
validate(user.address, "address")
println("保存--${user.id}--${user.name}--${user.address}")
}
输出结果
保存--100--张三--杭州
9.Interface
接口方法可以有默认的实现
Button().onClick()
interface IClick {
//接口方法可以有默认的实现
fun onClick() {
println("默认实现")
}
}
class Button : IClick {
override fun onClick() {
super.onClick()
println("自己实现")
}
}
输出结果
默认实现
自己实现
10.内部类
- 1,通过 inner 修饰表示是内部类
- 2,不修饰表示是static
- 3,内部访问外部类 this@Outer
/**
* 内部类
* 1,通过 inner 修饰表示是内部类
* 2,不修饰表示是static
* 3,内部访问外部类 this@Outer
*/
class Outer {
val name: String = "张三"
var inner = Inner()
inner class Inner {
fun getOuter(): Outer {
println([email protected])
return this@Outer
}
}
class Inner2
}