Java方法
1.方法的概述
方法是一段具有独立功能的代码块,不被调用就不会被执行。
ps:为啥要有方法:如果一个功能不写成方法,那么编写代码的时候就会重复编写这些代码,导致代码的不美观,也增加了自己的负担,如果将这段功能写成方法,这个问题就迎刃而解了。
2.方法的定义和调用
方法定义的语法格式:
作用修饰符 关键字 方法的返回类型 方法名(参数类型 参数名...){
方法体
}
//写一个输出helloworld 的方法
public static void main(String[] args){
System.out.println("Hello World!");
}
方法调用(在同一个类中)的格式
方法名();
在其他类中调用方法:
对象名。方法名();
3.方法的调用过程
- 方法没有被调用的时候,都会在方法区中的字节码文件(.class)中存储
- 方法被调用的时候后,需要进入到栈内存中运行
栈又有一个先进后出的规则,如同一个水桶一样,进水和出水都是从上面那个口子,底部是不进不出的
那么有如下方法
public class Test{
public static void main(String[] args){
demo1();
}
public static void demo1(){
demo2();
System.out.println("这是demo1方法");
demo3();
}
public static void demo2(){
System.out.println("这是demo2方法");
}
public static void main(String[] args){
System.out.println("这是demo3方法");
}
}
首先main方法,会压栈,进入栈底,然后demo1()方法被调用,整个方法体进栈;顺序就是demo2(),输出语句,demo3()。所以在最上面的demo2()方法先出,其次是输出语句,最后是demo3()方法被调用。
输出的结果是:“这是demo2方法”–>“这是demo1方法”–>"这是demo3"方法
4.带参数方法的调用与定义
为什么要有带参数方法
因为在实际的编写代码的过程中,一个方法可能会被多次调用,但是需求可能会不相同,所以有参的方法,在不改变方法的基础上,能够被不同的需求调用。
带参数方法的定义
格式:public static void 方法名(参数){方法体}
单个参数:public static void 方法名(参数类型 参数名){方法体}
多个参数:public static void 方法名(参数类型 参数名,参数类型 参数名){方法体}
ps:
- 方法定义是,参数中的数据类型与变量名都不能缺少,缺少任意一个程序都将会报错
- 方法定义时,多个参数之间使用逗号隔开。
- 上面的参数类型,参数名就涉及到了形参,而形参是没有具体的值
- 方法调用的时候,就是实参,实参有具体的值
- 对于基本数据类型的参数,形参的改变,不影响实参的值。
- 对于引用类型的参数,形参的改变会影响实参的值
5.带返回值的方法定义和调用
为什么方法要带返回的方法
在实际的编写代码过程中,如果一个方法的值,后续没有被使用了,是可以不带返回值的。但是如果一个方法的结构在后续的需求还需要被使用,这时带返回值的方法,就可以直接被需要的方法直接接受他的值。
带返回值的方法格式
public static 数据类型 方法名(参数类型 参数名){
方法体;
return 数据;
}
返回数据的数据类型一定要和定义的数据类型一样。
既然是带有返回值的方法,被调用的时候一定要用相同的数据类型变量接受这个返回值,否则返回将毫无意义。
6.方法的通用格式
-
格式:public static 返回值类型 方法名(参数){
方法体;
return 数据;
}
-
public static 修饰符
-
返回值类型 return 返回数据的数据类型就是返回值类型,如果没有返回值,则写void
-
方法名:被调用的时候使用的标识
-
参数 由数据类型和变量名组成,多个参数之间用逗号隔开
-
方法体 完成功能的代码块
-
return 如果方法操作完毕,有数据返回,用于吧数据返回给调用的对象
-
定义方法时,要做到两个明确
- 明确参数:主要是明确参数的类型和数量
- 明确返回值类型:主要是明确方法操作完毕之后是否有数据返回。
-
调用方法时
- void类型的方法,可以直接调用
- 非void类型的方法,推荐用变量接受并调用
-
方法不能嵌套定义
7.方法的重载
重载的概述
- 在用一个类中,定义了多个同名的方法,但每个方法具有不用的参数类型或参数个数,这些同名的方法就构成重载关系
- 简单概括:在同一个类中,方法名相同,参数不同的方法就构成重载
- 参数不用包括
- 个数不同
- 类型不同
- 顺序不用