Java方法详解
1. 方法概述
为了解决代码重复编写的问题,可以将需要重复编写的代码提取出来放在一个{}中,给这段代码起个名字,通过这个名字来调用这段代码就可以实现想要做的事情。提取出来的代码可以组成一个方法。
2. 方法存在的意义
l 提高代码的复用性。
l 增强代码的可维护性。
3. 书写方法的格式
l 方法格式
修饰符 返回值类型 方法名(参数类型参数名1,参数类型参数名2…) {
方法体;
return 返回值;
}
方法组成的三要素:返回值类型、方法名、参数列表。
l 方法的各个参数的说明
修饰符:public private 默认 protected。
返回值类型:返回值的数据类型,当不确定方法的返回值类型时,可以将返回值类型写成Object(因为Object是java中的根类,可以接收任意类型的返回值)。
方法名:给方法起的一个名字。
参数类型:调用方法时传入的数据的数据类型,参数类型包括基本数据类型和引用数据类型。
参数名:调用方法时传入的参数的参数的名字。
方法体:实现业务功能的代码。
Return:结束方法,返回返回值。
l 注意事项:
方法定义完成之后,在调用方法的时候才会执行方法,不调用的时候不会执行。
4. 方法调用的原理和过程
4.1 首先编写一个java类。
4.2在java类中找到main方法,并且调用main方法。
4.3在main方法中调用sum方法。
4.4让形参接收实参。
4.5执行sum方法内部的业务代码。
4.6方法内部的变量在方法结束时销毁,最后需要把返回值通过return返回方法外。
4.7结束。
5. 方法的返回值是void
l 代码格式
修饰符 void 方法名(参数类型参数名1,参数类型参数名2…) {
方法体;
return ;
}
l 代码示例:
public class MethodDemo01 {
public static void main(String[] args) {
getInfo();
}
public static void getInfo(){
System.out.println("返回值是void");
}
}
6. 方法重载
l 概述
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。方法重载的意义是可以减轻开发人员的记忆负担。
l 特点
与返回值类型无关。
参数列表不一样,体现在参数的类型不一样和个数不一样,当个数和类型都一样时,顺序不一样也行。
在调用时,jvm虚拟机通过参数列表的不同来区分同名方法
l 代码示例:
public class MethodDemo02 {
public static void main(String[] args) {
int a = 10;
int b = 20;
// 求和
int result = sum(a, b);
System.out.println("result:" + result);
int c = 30;
// 求和
result = sum(a,b,c);
System.out.println("result:"+result);
}
//两个float类型的数据求和
public static float sum(float a,float b) {
return a + b;
}
// 三个整数的求和
public static int sum(int a,int b,int c) {
return a + b + c;
}
// 两个整数的求和
public static int sum(int a, int b) {
return a + b;
}
}
7. 方法中的参数传递
l 概述
当我们要调用一个方法时,我们会把指定的数据,传递给方法中的参数,这样方法中的参数就拥有了这个指定的数据。这种传递方式,被称为参数传递。
l 参数传递的特点
定义方法时,参数列表中的变量,是形式参数
调用方法时,传给方法的数值,是实际参数
形式参数的改变不会影响实际参数,也可以理解为形式参数的名称可以和实际参数的名称不一致。
l 参数是基本数据类型时,值传递
代码示例:
public class MethodDemo03 {
public static void main(String[] args) {
int a = 10;
int b = 20;
swap(a,b);
}
public static void swap(int a,int b){
int temp = a;
a = b;
b = temp;
System.out.println(a+b);
}
}
l 参数是引用数据类型时,是引用传递
引用传递的介绍:
方法中的参数是引用数据类型时,方法中传递的不是具体的数据,而是传递的是引用的地址,因此不需要返回数据。
参数指向的是堆内存中引用数据类型的对象的地址。把引用数据类型的参数(堆内存中的地址)比喻成一把钥匙,把引用数据类型的对象比喻成一个房子,只要有相同钥匙的人,房间对于这些人是共享的,这些人都可以对这个房间进行操作。
代码示例:
public class MethodDemo04 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int[] arr = {a,b};
swap(arr);
}
public static void swap(int[] arr){
int temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
System.out.println(arr);
}
}