快来快来!又来更新了,Java基础(五)方法。

本贴为持续更新贴!内容附带大量图文和练习,供大家学习时参考。本贴主要内容为方法及更多知识,希望大家阅读后能有不少的了解。更多资料请练习:
码牛云课堂Java技术指导霸牛老师(微信):mnykt8080;
​ 码牛云Java技术交流QQ群:1142264605;

1.方法概述

1.1 方法的概念

方法:具有特定逻辑的一段代码。

作用:提高代码的复用性。

2. 方法的定义和调用

2.1 无参数方法定义和调用

定义格式:

public static void 方法名 (   ) {
	// 方法体;
}

调用格式:

方法名();

注意:

  1. 方法定义的先后顺序无所谓。
  2. 方法的定义不能产生嵌套包含关系。
  3. 方法必须调用才能执行
package com.mnyketang;
/*
    无参数无返回值的方法练习
       定义一个方法判断一个数是否是偶数
 */
public class Demo02 {
    public static void main(String[] args) {     
        //调用方法
        isEvenNumber();      
    }
    //定义一个方法判断一个数是否是偶数
    public static void isEvenNumber() {
        int num = 16;
        //判断num是否是偶数
        if (num % 2 == 0) {
            System.out.println(num + "是偶数");
        } else {
            System.out.println(num + "不是偶数");
        }
    }
}

3. 带参数方法定义和调用

3.1 带参数方法定义和调用

定义格式:

public static void 方法名 (参数1) {
	方法体;
}

public static void 方法名 (参数1, 参数2, 参数3...) {
	方法体;
}

注意:

参数:和之前定义变量一样,数据类型 参数名

方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错.

方法定义时,多个参数之间使用逗号( ,)分隔

调用格式:

方法名(参数);

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

注意:

方法调用时,参数的数量与类型必须与方法定义中的设置相匹配,否则程序将报错

package com.mnyketang;

public class Demo02 {
    public static void main(String[] args) {     
        //调用方法
        isEvenNumber(16);
    }
    //定义一个方法判断一个数是否是偶数
    public static void isEvenNumber(int a) {
//        int num = 16;
        //判断num是否是偶数
        if (a % 2 == 0) {
            System.out.println(a + "是偶数");
        } else {
            System.out.println(a + "不是偶数");
        }
    }
}

3.2 形参和实参

形参:方法定义中的参数。

实参:方法调用时传递的参数。

3.3 带参数方法练习

需求:设计一个方法用于打印两个数中的较大数,数据来自于方法参数

思路:

1.定义一个方法,用于打印两个整数中的较大数

2.为了扩展 性,可以将要比较的两个数定义为方法形参。

3.使用if第二种格式对两个数大小进行判断。

4.在main()方法中调用方法并传递实际参数。

代码:

package com.mnyketang;
/*
    需求:设计一个方法用于打印两个数中的较大数,数据来自于方法参数 

    思路:

    1.定义一个方法,用于打印两个整数中的较大数

    2.为了扩展 性,可以将要比较的两个数定义为方法形参。

    3.使用if第二种格式对两个数大小进行判断。

    4.在main()方法中调用方法并传递实际参数。


 */
public class Demo03 {
    public static void main(String[] args) {
        printMax(7, 8);
    }

    public static void printMax(int a, int b) {
        if (a > b) {
            System.out.println("最大值为" + a);
        } else {
            System.out.println("最大值为" + b);
        }
    }
}

4. 带返回值方法的定义和调用

4.1 带返回值方法定义和调用

定义格式

public static 数据类型 方法名 (参数列表) { 
	return 数据;
}

注意:

方法定义时return后面的返回值与方法定义上的数据类型要匹配,否则程序将报错

调用格式

方法名 (参数);
数据类型 变量名 = 方法名 ( 参数 ) ;

注意:

方法的返回值通常会使用变量接收,否则该返回值将无意义

4.2 带返回值方法练习

需求:设计一个方法可以获取两个数之和

代码:

package com.mnyketang;
/*
    带返回值方法定义和调用
    定义格式
        public static 数据类型 方法名 (参数列表) {
            return 数据;
        }
    调用格式
        方法名 (参数);
        数据类型 变量名 = 方法名 ( 参数 ) ;
 */
public class Demo04 {
    public static void main(String[] args) {
        //1.常用调用方式
        int result = getSum(10,20);
        System.out.println(result);

        //2.打印调用
        System.out.println(getSum(10,20));

        //3.有返回值的方法,直接调用没有意义
        //getSum(100,200);
    }

    /*
        定义方法,获取两个int数据之和
        三要素:
            1.方法名称:     getSum
            2.参数列表:     int a,int b
            3.返回值类型:   int
     */
    public static int getSum(int a, int b) {
        int sum = a + b;
        return sum;//这的return两个作用:返回数据给方法调用者并且结束方法的执行

    }
}

5. 方法的注意事项

5.1 方法的注意事项(掌握)

方法不能嵌套定义

示例代码:

public class Demo05 {
    public static void main(String[] args) {

    }

    public static void a() {
		public static void b() {
       		//报错
    	}
    }
}

void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据

示例代码:

public class Demo06 {
    public static void main(String[] args) {

    }
    public static void c() {
        
        return;//在没有返回值的方法中也可以使用return语句,此时return语句就仅仅是结束方法的执行。	
        //System.out.println(1); return语句后面不能有代码
    }
}

5.2 方法的通用格式

格式:

修饰符 返回值类型 方法名(参数) {
   方法体; 
   return 数据 ;
}

定义方法时,要做到两个明确

明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应的数据类型

明确参数:主要是明确参数的类型和数量

6. 方法重载

6.1 方法重载

方法重载概念

方法重载:指的是在同一个类中,方法名相同,参数列表不同(参数数据类型不同、个数不同、顺序不同),和返

回值和修饰符无关的方法。

范例:

package com.mnyketang;

public class Demo07 {
    public static void main(String[] args) {

    }
    
    public static void a(int a) {
        //方法体
    }

    public static void a(int a , int b) {
        //方法体
    }

    public static void a(int a , double b) {
        //方法体
    }

    public static void a(double a , int b) {
        //方法体
    }

}

6.2 方法重载练习

需求:使用方法重载的思想,设计返回两个整数、小数、short类型数据的最大值。

思路:

1.定义一个方法,方法名为getSum

2.定义重载方法,参数分别为int类型、double类型、short 类型

3.调用方法

代码:

package com.mnyketang;
/*
    需求:使用方法重载的思想,设计返回两个整数、小数、short类型数据的最大值。

    思路:

    1.定义一个方法,方法名为getSum

    2.定义重载方法,参数分别为int类型、double类型、short 类型

    3.调用方法

 */
public class Demo06 {
    public static void main(String[] args) {
        System.out.println(getInt(1, 2));
        System.out.println(getDouble(1.0, 2.0));
        System.out.println(getShort((short) 10, (short) 20));
    }

    //获取两个整数最大值
    public static int getInt(int a,int b){
        if(a > b){
            return a;
        }else {
            return b;
        }
    }

    //获取两个小数最大值
    public static double getDouble(double a,double b){
        if(a > b){
            return a;
        }else {
            return b;
        }
    }

    //获取两个short数据最大值
    public static short getShort(short a,short b){
        if(a > b){
            return a;
        }else {
            return b;
        }
    }
}

7. 方法的参数传递

7.1 方法参数传递基本类型

测试代码:

package com.mnyketang;
public class Demo08 {
    public static void main(String[] args) {
        int a = 100;
        System.out.println("调用方法前:" + a);
        update(a);
        System.out.println("调用方法后:" + a);
    }

    private static void update(int a) {
        a += 200;
    }

}

结论:

基本数据类型的参数,形式参数的改变,不影响实际参数

原理:

每个方法都会有独立的栈空间,局部变量存放在各自的占空间当中。

快来快来!又来更新了,Java基础(五)方法。_第1张图片

7.2 方法参数传递引用类型

代码:

package com.mnyketang;
public class Demo09 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        System.out.println("调用方法前:" + arr[0]);
        update(arr);
        System.out.println("调用方法后:" + arr[0]);
    }

    public static void update(int[] arr) {
        arr[0] = 100;
    }
}

结论:

对于引用类型的参数,形式参数的改变,影响实际参数的值

快来快来!又来更新了,Java基础(五)方法。_第2张图片

原理:

引用类型变量保存的是地址值,当做参数传递时,传递的是地址值,在方法中通过地址值操作数组后,在访问就是修改后的值

7.3 数组遍历(应用)

需求:设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:[100, 200, 300, 400,500]

思路:

1.静态初始化一个数组,元素为100 200 300 400 500

2.定义一个方法,对数组进行遍历,并按照要求进行打印

3.调用方法

代码:

package com.mnyketang;
public class Demo10 {
    public static void main(String[] args) {
        //1.静态初始化一个数组,元素为100 200 300 400 500
        int[] arr = {100,200,300,400,500};

        //调用方法
        printArray(arr);
    }

    //定义一个方法,对数组进行遍历
    /*
        两个明确:
            返回值类型:void
            参数:int[] arr
     */
    public static void printArray(int[] arr) {
        System.out.print("[");
        for(int x=0; x<arr.length; x++) {
            if(x == arr.length-1) {
                System.out.print(arr[x]);
            } else {
                System.out.print(arr[x]+", ");
            }
        }
        System.out.println("]");
    }
}

7.4 数组最大值

需求:设计一个方法用于获取数组中元素的最大值

思路:

1.静态初始化一个数组。

2.定义一个方法,获取数组中的最大值。

3.调用方法

4.输出最大值

代码:

package com.mnyketang;
public class Demo11 {
    public static void main(String[] args) {
        //1.静态初始化一个数组。
        int[] arr = {25, 68, 785, 71, 45};

        //3.调用方法
        int max = getMax(arr);

        //4.输出最大值
        System.out.println(max);
    }

    //2.定义一个方法,获取数组中的最大值。
    /*
        两个明确:
            返回值类型:int
            参数:int[] arr
     */
    public static int getMax(int[] arr) {
        int max = arr[0];

        for(int x=1; x<arr.length; x++) {
            if(arr[x] > max) {
                max = arr[x];
            }
        }
        return max;
    }
}

8.Debug模式

1.1什么是Debug模式【理解】

是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。

1.2Debug模式操作流程【应用】

如何加断点

快来快来!又来更新了,Java基础(五)方法。_第3张图片

debug运行程序

快来快来!又来更新了,Java基础(五)方法。_第4张图片

控制台及debug窗口

快来快来!又来更新了,Java基础(五)方法。_第5张图片

点哪里

快来快来!又来更新了,Java基础(五)方法。_第6张图片

上边从左往右按钮依次为:

F8:执行下一行代码

F7:执行下一行遇到方法调用进入方法中

绿色小三角是运行下一个断点

红色正方形结束debug模式

如何删除断点

选择要删除的断点,单击鼠标左键即可

你可能感兴趣的:(JavaSE基础系列,java,编程语言,后端)