方法
把重复且有效的代码抽取成的形式就是方法
书写格式:
修饰符 方法返回值类型 方法名(参数列表){
方法体;
return 返回值;
}
a 修饰符:public static
b 方法返回值类型:提供返回值对应的类型来接收
没有返回值使用void
c 方法名:标识符
d 参数列表:由参数类型、参数个数以及参数顺序共同决定的
e 方法体:重复且有效的代码
f return:跳转控制语句,把返回值来进行返回
方法不能嵌套
注意:
1、方法只有被调用了才能执行
2、无返回值时用单独调用,有返回值用输出、赋值调用
3、两个明确:方法返回值类型 参数列表
4、return功能:结束方法、把返回值进行返回
5、当方法有返回值,考虑参数所有的取值情况,给定对应的返回值
重载方法
在一个类中,方法名一致,参数列表不一致
两同一不同:同一个类,同一个方法名,不同的形参列表
形参列表不同:类型、个数、顺序不同
在调用重载方法时,如果提供精确匹配的方法,就做精确匹配;如果没有提供精确匹配的方法,就做相对精确匹配。如果提供多个相同程度的相对精确匹配的方法,就匹配不到,就会报错(最好提供精确匹配的方法)
方法的重载和权限修饰符、形参的名字、返回值类型无关
方法传值
实参—实际传入的值
形参—接收实参的值
1、当实参为基本数据类型时,传递的是拷贝值
基本类型没有在堆内开辟内存空间
2、当实参为引用数据类型时,传递的是地址值的拷贝
如果拷贝的地址值找到原堆内存,就有可能有影响
如果拷贝的地址值没有找到原堆内存,做任何操作都不会有影响
有参有返回值
有参无返回值
无参有返回值
无参无返回值
方法递归
执行方法时调用本方法
sum(5)=1+2+3+4+5
=5+4+3+2+1
return 5+sum(4)
return 4+sum(3)
return 3+sum(2)
return 2+sum(1)=1
StackOverflowError—栈溢出错误(递归次数过多)