方法
概念:在程序中要去实现的某一个功能,需要包含多条语句,这些语句包含循环语句结构,选择语句结构等共同来处理一件事情
定义方法的格式
public static void main(String[] args){
//方法体内容
}
void 空的,无效的
String[] 参数 --> 变量
方法比喻成工厂
方法定义的完整格式:修饰符 返回值类型 方法名称(参数类型 参数名称,参数类型2 参数名称2,…){}
修饰符:public static
返回值类型:方法最终产生的数据结果是什么样的。 void 无返回值,有返回值用到return
方法名称:方法的名字,名字自定义–标识符,采用小驼峰
参数类型:进入方法的数据是什么类型
参数名称:进入方法当中的数据对应的变量名称
方法体:方法需要执行的功能,由若干行执行
return:一般认为有两个作用,1.可以将后面的返回值返回给程序,2.可以停止当前方法的执行
返回值:就是方法执行最终产生的数据结果
备注:
- return后面的"返回值",必须和方法声明上的"返回值类型"保持一致
- 方法不允许嵌套,不允许定义在类的外面
- 方法只能并列,并且必须定义在类的里面
方法调用【重点】
三种调用格式:
- 单独调用:方法名称(参数具体值);
- 打印调用:System.out.println(方法名称(参数具体值));
- 赋值调用:数据类型 变量名称 = 方法名称(参数具体值);
备注:当返回值类型为void的时候,这种方法只能单独调用,不能打印调用或者赋值调用
返回值类型一般可以理解为数据类型(基本数据类型和引用数据类型),此外还包含一种类型void类型,当方法执行完毕不需要给程序调用者返回任何数据结果时,可以指定给方法的返回值类型为void,此时只能单独调用
注意事项:
- 方法定义的先后顺序无所谓
- 方法定义不能嵌套,不能在一个方法内部定义另一个方法
- 方法定义之后,自己不会执行,如果希望执行,一定要进行方法的调用
方法重载
对于功能类似的方法来说,因为参数列表不一样,却需要定义不同的方法名称,对于开发者来说,记忆类似的不同方法名,非常麻烦。
public class MethodDemo03{
public static void main(String[] args){
//计算一个整数和一个小数的和,整数位第一个参数,小数为第二个参数
int number = sum(10,3.14);
//计算一个整数和一个小数的和,小数位第一个参数,整数为第二个参数
int number02 = sum(3.14,10);
}
//计算两个数的和,得到一个整数
//计算两个整数的和
public static int sum(int a,int b){
return (a+b);
}
//计算两个小数的和
public static double sum(double a,double b){
return (a+b);
}
//计算一个整数和一个小数的和
public static double sum(int a,double b){
return (a+b)
}
public static double sum(double a,int b){
return (a+b)
}
}
//如果在类中定义方法时,方法的参数列表不一致,虽然方法名称一样,但程序会认为这是一个新方法。
方法重载(Overload):在一个类中多个方法名称一样但参数列表不一样的
好处:只需要记住唯一一个方法名即可,就可以实现类似的多个功能。
方法的重载与那些因素有关:
- 参数个数不同
- 参数类型不同
- 参数的多类型顺序不同
方法重载与那些因素无关:
- 与参数名称无关
- 与方法的返回值类型无关
- 与方法的修饰符无关
数组作为方法参数和返回值
数组作为方法的参数
数组作为引用类型能否作为方法的参数进行传递?可以
-
数组作为方法参数传递时,传递的参数是数组内存的地址值。
public static void main(String[] args){ int[] arr = {1,2,3,4}; //调用方法,传递数组 println(arr); } /* 创建方法,方法接受数组类型的参数 进行数组的遍历 */ public static void println(int[] arr){ //数组遍历 for (int i = 0; int < arr.length; i++){ System.out.println(arr[i]); } }
数组作为方法的返回值
-
数组作为方法的返回值,返回的是数组的内存地址。
public static void main(String[] args){ //调用方法,接收数组的返回值 //就收到的是数组的内存地址 int[] arr = getArray(); System.out.println(arr);//此时是一个内存地址哈希值 } /* 创建方法,返回值的数组类型 return 返回数组的内存地址 */ public static int[] getArray(){ int[] arr = {1,2,33,4,5}; //此时返回数组的内存地址,返回给调用者 return arr; }
一个方法可以有0,1,多个参数;但是只能由0个或者一个返回值,不能有多个返回值。如果希望一个方法当中产生了多个结果数据,这些多个结果数据同时需要返回
解决方案:使用一个容器(数组)作为方法的返回值类型即可。
public static void main(String[] args){ int a = 10; int b = 20; change(a,b); System.out.println(a);//10 System.out.println(b);//20 } public static void change(int a,int b){ a = a + b;//30 b = b + a;//50 }
public static void main(String[] args){ int[] arr = {10,20}; changeArray(arr); System.out.println(arr[0]);//30 System.out.println(arr[1]);//50 } //指向数组的内存地址值 public static void changeArray(int[] arr){ arr[0] = 30; arr[1] = 50; }