/**
* kotlin 的方法有三种
* */
fun main() {
/**
* 方法一
* 1.普通类的成员方法申明与调用
* (1)需要先构建出实例对象,才能访问成员方法
* (2)实例对象的构建只需要在类名后面加上()
* */
Person().test()
/**
* 方法二:静态类里的方法都是静态方法
* 静态类里的方法都是静态方法
* 不需要构建出实例对象,可以通过类名直接访问静态方法
* */
val num = NumberUtil.double(2)
println("num=$num")
/**
* 方法三:当我们想在一个普通类,也就是class声明的类里面。想要定义一个静态方法的话
* 不需要构建实例对象,可以通过类名,直接访问静态方法
* */
Person.test2()
read(1,2)
read(start = 2)
read2(1,2, action = {
//方法体的最后一行就是方法的返回值
val result=1*2
"括号内传递参数 read2"
})
read2(start = 1){
"括号外传递参数 read2"
}
val append:String= append('1','2','3','4')
println("append:$append")
/**
* 当我们调用vararg方法时,我们可以一个接一个地传参,例如append('1,','2','r','d'),
* 或者如果我们已经有一个数组并且希望将其所有内容传给该方法,我们使用延展(sread)操作符(在数组前面加*):
* */
val world= charArrayOf('1','2','r','d')
val result= append('h','e','l','l','o',*world)
println("sread_result:$result")
}
//普通类
class Person {
//方法一
fun test() {
println("成员方法")
}
//方法二
companion object {
fun test2(){
println("伴生类")
}
}
}
/**
* object修饰的类都是静态类
* */
object NumberUtil {
//方法三
fun double(num: Int): Int {
return num * 2
}
}
/**
* 方法中的参数
* 参数类型
* 1.默认参数
* 2.具名参数:指定参数名称
* 3.可变参数
* 如果一个默认参数在一个默认值的参数之前,那么无默认值的参数,只能通过使用具明参数调用该方法来使用
* 如:read(start=1) 仅仅只给start传值,使用默认值offset=0
* */
fun read(offset:Int=0,start:Int){
println("offset:$offset start=$start")
}
/**
* * 如果最后一个参数是方法,那么它既可以作为具名参数在括号内传入,也可以在括号内传入
* 第三个参数action:是一个方法
* 如果参数的类型是(),说明它是一个方法,如action:()
* 方法参数的返回值使用->:如果不需要返回值,使用Unit;如果需要放回Int,就使用Int,其他都这样类似
*
* 可变参数的要求
* 只有一个参数可以标注为vararg
* 如果vararg参数不是最后一个参数,可以使用具名参数语法,给后面的参数的传递值
* */
fun read2(offset:Int=0,start:Int,action:()->String){
val ret=action()
println("offset:$offset start=$start ret:$ret")
}
/**
* 可变数量的参数
* 方法的参数(通常是最后一个)可以用vararg修饰标记
* */
fun append(vararg str:Char):String{
val result = StringBuffer()
for (char in str){
result.append(char)
}
return result.toString()
}
Kotlin 学习-方法和参数类型
安小牛2025-04-15 5:02
相关推荐
雨白23 分钟前
深入理解 Android DocumentFile:性能陷阱与最佳实践2501_9411458530 分钟前
虚拟现实与增强现实技术在教育培训与沉浸式学习场景中的创新应用研究inputA33 分钟前
【LwIP源码学习8】netbuf源码分析CHINAHEAO1 小时前
FlyEnv+Bagisto安装遇到的一些问题毕设源码-郭学长1 小时前
【开题答辩全过程】以 基于Android的自习室座位预订系统为例,包含答辩的问题和答案d111111111d1 小时前
STM32外设学习-I2C(细节)--学习笔记( ˶˙⚇˙˶ )୨⚑︎1 小时前
【学习笔记】DiffFNO: Diffusion Fourier Neural OperatorTopplyz1 小时前
交流耦合同相放大电路、MAX4466音频放大电路功能详解ModestCoder_1 小时前
【学习笔记】Diffusion Policy for Robotics麦麦大数据1 小时前
F049 知识图谱双算法推荐在线学习系统vue+flask+neo4j之BS架构开题论文全源码