方法

我们在编程过程中有的时候会遇到一些固定套路的代码,我们可以把这些代码封装成方法,这样我们后面去使用的时候就会更加的方便。并且代码也会更简洁,代码复用性更高。

方法的定义格式

  1. 修饰符 返回值类型 方法名(参数类型1 参数名1,参数类型2 参数名2,....){
  2. 方法体;
  3. return 返回值;
  4. }
  1. 修饰符: 目前阶段使用public static 后期学完权限修饰符和static等修饰符后可以灵活使用
  2. 参数: 执行方法需要的数据
  3. 返回值: 方法执行完后得到的结果
  4. 方法体:方法中的代码
  5. 返回值类型:返回值执行完后结果的数据类型,如果没有结果就写成void

例如:

  1. public static void printInt(int num){
  2. System.out.println(num);
  3. }
  4. public static int getSum(int a,int b){
  5. return a+b;
  6. }

方法的调用格式

  1. 方法名(参数1,参数2...);

注意

  1. 传参数的时候方法定义里有几个参数就传几个参数.方法定义的时候参数是什么类型就传什么类型.<br />
  2. 如果方法有返回值,一般是用变量来接收返回值,返回值是什么类型,就用什么类型的变量来接收。

例如:

  1. public class Demo{
  2. public static void printInt(int num){
  3. System.out.println(num);
  4. }
  5. public static int getSum(int a,int b){
  6. return a+b;
  7. }
  8. public static void main(String[] args){
  9. printInt(10);
  10. printInt(20);
  11. int sum = getSum(1,2);
  12. }
  13. }

return的作用

  1. 1.返回方法的返回值
  2. 2. 结束方法(reutrn执行后整个方法执行结束)

方法重载

定义:在同一个类中,方法名相同,参数列表不同的方法才叫方法重载(与返回值无关)

参数列表不同:1. 参数类型不同 2.参数个数不同 3.参数顺序不同

如何判断参数列表是否相同?把参数类型全部拼接成一个字符串,如果字符串的内容不同就算参数列表不同。

  1. public class Demo{
  2. public int test(int a,int b){} // intint
  3. public void test(int a,int b){}//错
  4. public void test(int a,int b,int c){}
  5. public void test(int x,int y){}//错
  6. public void test(int a,double b){}
  7. public void test(double a,int b){}
  8. public void test(double a,double b){}
  9. }

小思考

1.一个方法能不能有两个返回值?(PS:学会用代码去验证你的想法)

答案:不能直接返回,可以把结果放入数组中返回

2.没有返回值的方法中能不能写return?

答案: 可以,可以用来结束方法。但是return的后面不能跟数据;

3.看看下面代码的输出结果是什么?

  1. public static void main(String[] args) {
  2. int a = 10;
  3. int b = 20;
  4. System.out.println("a="+a);
  5. System.out.println("b="+b);
  6. change(a,b);
  7. System.out.println("方法调用后a="+a);
  8. System.out.println("方法调用后b="+b);
  9. }
  10. public static void change(int a,int b){
  11. int temp = a;//int temp = 10;
  12. a = b;//a = 20;
  13. b = temp;// b = 10;
  14. }

4.看看下面代码的输出结果是什么?

  1. public static void main(String[] args) {
  2. int[] arr = {1,2}
  3. System.out.println("arr[0]="+arr[0]);
  4. System.out.println("arr[1]="+arr[1]);
  5. change(arr);
  6. System.out.println("方法调用后arr[0]="+arr[0]);
  7. System.out.println("方法调用后arr[1]="+arr[1]);
  8. }
  9. public static void change(int[] arr){
  10. int temp = arr[0];
  11. arr[0] = arr[1];
  12. arr[1] = temp;
  13. }

问题:java中方法调用的时候,形参的改变会不会影响实参?

答:如果方法的参数是基本数据类型,形参的改变不会影响实参。如果方法的参数是引用数据类型,形参的改变会影响实参。

作业

看看下面代码的输出结果是什么?

  1. public static void main(String[] args) {
  2. int[] arr = {1,2};
  3. System.out.println("arr[0]="+arr[0]);
  4. System.out.println("arr[1]="+arr[1]);
  5. change(arr);
  6. System.out.println("方法调用后arr[0]="+arr[0]);
  7. System.out.println("方法调用后arr[1]="+arr[1]);
  8. }
  9. public static void change(int[] arr){
  10. arr = new int[2];
  11. arr[0] = 2;
  12. arr[1] = 1;
  13. }