Kotlin方法
- 方法声明
- 方法参数
- 方法用法
1.方法声明:
- 普通类的方法
- 静态类的方法
- companion object 伴生类的方法
方法的组成:
1.普通类的方法
fun main(){
//普通类的成员方法声明与调用
//需要先构建出实例对象,才能访问成员方法
//实例对象的构建只需要在类名后面加上()
Person().test()
//打印:成员方法
}
class Person{
fun test(){
println("成员方法")
}
}
2.静态类的方法
如果我们想要实现一个工具util的话,可以借助 关键字object 来创建一个静态类
fun main(){
// 静态类里面的方法。都是静态方法,
//不需要构建实例对象,可以通过类名,直接访问静态方法
val num2= NumUtil.double(1)
println(num2)
//打印:2
}
object NumUtil{
fun double(num:Int):Int{
return num*2
}
}
3.cmpanion object 伴生类的方法
Kotlin中并没有static关键字,不过我们可以借助cmpanion object来实现类静态方法的目的(也就是想在普通类中声明的方法,希望不再需要构建实例对象,可以通过类名,直接访问静态方法)
fun main(){
Person.test()
//打印:成员方法
}
class Person{
companion object{
fun test(){
println("成员方法")
}
}
}
2.方法参数
- 默认参数
- 具名参数
- 可变数量的参数
1.默认参数:
方法参数可以有默认值,当省略相应的参数时使用默认值。与其Java相比,这可以减少重载数量 我们可以通过类型后面的 = 来设置 默认值
fun read(offset:Int=0,start:Int){/*....*/}
2.具名参数:
如果一个默认值参数在一个无默认值的参数之前,那么无默认值的参数,只能通过使用具名参数调用该方法来使用:
fun read(offset:Int=0,start:Int){/*....*/}
//仅仅只给start传递值,使用默认值offset=0
read(start=1)
如果最后一个参数是方法,那么它既可以作为具名参数在括号内传入,也可以在括号外传入。
//Unit:action返回值类型
fun read(offset:Int=0,start:Int,action:()->Unit){/*....*/}
// 使用默认值 offset=0
read(start=1){println("hello")}
read(offset=1,start=1,action={println("hello")}
3.可变数量的参数(Varargs):
方法的参数(通常是最后一个)可以用vararg修饰符标记:
可变参数的要求:
- 只有一个参数可以标注为vararg;
- 如果vararg参数不是最后一个参数,可以使用具名参数语法,给后面的参数的传递值
fun main(){
1.允许将可变数量的参数传递给方法
val append= append('1','2','3','4')
println("append:${append}")
//打印:append:1234
2.将一个数组的内容传递给该方法,我们使用伸展(spread)操作符(在数组前面加*):
val world=charArrayOf('w','o','r','l','d')
val result=append('h','e','l','o','',*world)
println("result:${result}")
//打印 result:hello world
}
//vararg:传递不定常的参数
fun append(vararg str:Char):String{
val result=StringBuffer()
for (char in str) {
result.append(char)
}
return result.toString()
}
补充:StringBuffer 是一个可变的字符串序列,它的作用是允许你对字符串进行动态的修改,而不需要创建新的字符串对象。与不可变的 String 类型不同,StringBuffer 支持在其内部进行插入、删除、追加等操作,而不会创建新的字符串实例。这对于需要频繁修改字符串内容的场景来说非常有用,因为避免了不断创建新的字符串对象所带来的性能开销。
主要的操作包括:
- 追加(Append): 将新的字符或字符串追加到现有的字符串缓冲区。
- 插入(Insert): 在指定位置插入字符或字符串。
- 删除(Delete): 从指定位置删除一定数量的字符。
- 反转(Reverse): 反转字符串缓冲区中的字符顺序。