方法
方法是什么
- 方法是一种语法结构,它可以把一段代码封装成一个功能,以方便重复调用。
使用方法的好处
- 提高了代码的重复性
- 让程序的逻辑更清晰
例如:
/**
求和方法
*/
public class MethodDemo1 {
public static void main(String[] args) {
int c1 = sum(10, 30);
System.out.println("和是" + c1);
int c2 = sum(50, 20);
System.out.println("和是" + c2);
}
//求和方法sum
public static int sum(int a, int b){
int c = a + b;
return c;
}
}
方法的定义格式
- 方法的修饰符:暂时都是用public static 修饰。
- 方法申明了具体的返回值类型,内部必须使用return返回对应类型的数据。
- 形参列表可以有多个,甚至可以没有;如果有多个形参,多个形参必须用 ","隔开,且不能给初始化值。
方法的其他写法
- 方法定义时:返回值类型、形参列表可以按照需求进行填写。
示例:
public class MethodDemo2 {
public static void main(String[] args) {
print();
}
//输出三次Hello World
public static void print(){
for (int i = 0; i < 3; i++){
System.out.println("Hello World");
}
}
}
/*
运行结果为:
Hello World
Hello World
Hello World
*/
注意事项:
- 如果方法不需要返回结果,返回值类型必须申明成void(无返回值),此时方法内部可以不使用return返回数据。
- 方法如果没有参数,或者返回值类型申明为void可以称为无参数、无返回值的方法,依次类推。
方法常见问题
- 方法的编写顺序无所谓。
- 方法和方法之间是平级关系,不能嵌套。
- 方法的返回值类型为void(无返回值),方法内则不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据。
- return语句下面,不能编写代码,因为永远执行不到,属于无效代码。
- 方法不调用就不执行,调用时必须严格匹配方法的参数情况。
- 有返回值的方法调用时可以选择定义变量接收结果,或者之间输出调用,甚至直接调用;无返回值方法的调用只能直接调用一下。
// 有返回值的方法调用时可以选择定义变量接收结果,或者之间输出调用,甚至直接调用;无返回值方法的调用只能直接调用一下。
public class MethodDemo3 {
public static void main(String[] args) {
// 定义变量接收
int rs = sum(100, 200);
// 输出调用
System.out.println(sum(100, 200));
// 直接调用(只是运行方法,但是没有要结果)
sum(100, 200);
}
public static int sum(int a, int b){
int c = a + b;
return c;
}
}
方法的内存原理
方法的调用流程:
- 方法没有被调用的时候,在方法区中的字节码文件中存放。
- 方法被调用的时候,需要进入到栈内存中运行。
方法调用流程:
1.调用方法
2.方法结束,退出栈内存
3.输出值
4.main方法运行完成,退出栈内存
方法的参数传递机制
基本类型的参数传递
Java的参数传递机制:值传递
- 在传输实参给方法的形参的时候,并不是传输实参变量本身,而是传输实参变量中存储的值,这就是值传递。
注意:
- 实参:如在方法内部定义的变量。
- 形参:如在定义方法时,"( )"中所声明的参数。
引用类型的参数传递
change方法中引用的是数组的地址
基本类型和引用类型的参数在传递的时候有什么不同?
- 都是值传递。
- 基本类型的参数传输存储的数据值。
- 引用类型的参数传输存储的地址值。
方法重载
方法重载的形式、作用
方法重载:
- 同一个类中,出现多个方法名称相同,但是形参列表是不同的,那么这些方法就是重载方法。
案例:
- 需求如下:
- 可以默认买一块糖果。
- 可以买一块指定口味的糖果。
- 可以买多块指定口味的糖果。
调用方法的时候,会通过参数的不同来区分调用的是哪个方法。
public class OverLoad {
public static void main(String[] args) {
candy();
candy("草莓");
candy("青苹果", 3);
}
public static void candy(){
System.out.println("默认买一块荔枝味的糖果~");
}
public static void candy(String taste){
System.out.println("默认买一块" + taste + "味的糖果~");
}
public static void candy(String taste, int number){
System.out.println("默认买" + number + "块" + taste + "味的糖果~");
}
}
方法重载的作用:
- 可读性好,方法名称相同提示是同一类型的功能,通过形参不同实现功能差异化的选择,这是一种专业的代码设计。
方法重载的识别技巧
- 只要是同一个类中,方法名称相同、形参列表不同,那么他们就是重载的方法,其他都不管!
(如:修饰符,返回值类型都无所谓) - 形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称。
补充知识:单独使用return关键字
- return; 一> 可以立即跳出并结束当前方法的执行;return关键字单独使用可以放在任何方法中。
- break;一> 跳出并结束当前所在循环的执行。
- continue;一> 结束当前所在循环的当次继续,进入下一次执行。