方法工程

ℹ️本篇定位

本篇聚合 IDEA 工程 method-app 的全部源码练习(2025-12 学),按包分节全文收录——当年的学习注释(// 目标:… // 需求:…)原样保留,是最真实的练习轨迹。工程怎么建、模块/包/类怎么管理见 00-管理项目

包含 11 个 .java 练习,目录结构:

method-app/src/
├── com/zwnsyw/define/MethodDemo1.java
├── com/zwnsyw/define/MethodDemo2.java
├── com/zwnsyw/define/MethodProblemDemo3.java
├── com/zwnsyw/define/MethodTest4.java
├── com/zwnsyw/overload/MethodOverLoadDemo1.java
├── com/zwnsyw/overload/MethodTest2.java
├── com/zwnsyw/parameter/MethodDemo1.java
├── com/zwnsyw/parameter/MethodDemo2.java
├── com/zwnsyw/parameter/MethodTest3.java
├── com/zwnsyw/parameter/MethodTest4.java
└── com/zwnsyw/returndemo/ReturnDemo1.java

方法的定义

定义格式与设计练习。

MethodDemo1.java

package com.zwnsyw.define;

public class MethodDemo1 {
    public static void main(String[] args) {
        // 目标:掌握定义方法的完整格式,搞清楚使用方法的好处。
        // 需求:假如现在很多程序员都要进行2个整数求和的操作。

        // 1、李工。
        int rs = sum(10, 20);
        System.out.println("和是:" + rs);

        // 2、张工。
        int rs2 = sum(30, 20);
        System.out.println("和是:" + rs2);
    }

    public static int sum(int a,int b) {
        int c = a + b;
        return c;
    }
}

MethodDemo2.java

package com.zwnsyw.define;

public class MethodDemo2 {
    public static void main(String[] args) {
        // 目标:掌握按照方法解决的实际业务需求不同,设计出合理的方法形式来解决问题。
        // 需求:打印多行Hello World.
        printHelloWorld(3);

        System.out.println("---------------");

        printHelloWorld(6);


    }

    /**
       有参数,无返回值的方法
     */
    public static void printHelloWorld(int n){
        for (int i = 1; i <= n; i++) {
            System.out.println("Hello World");
        }
    }
}

MethodProblemDemo3.java

package com.zwnsyw.define;

public class MethodProblemDemo3 {



    public static void main(String[] args) {
        // 目标:搞清楚使用方法时的几个常见问题。
//        1、方法在类中的位置放前放后无所谓,但一个方法不能定义在另一个方法里面。
        // printHelloWorld();

//        2、方法的返回值类型写void(无返回申明)时,方法内不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据。

//        3、return语句的下面,不能编写代码,属于无效的代码,执行不到这儿。

//        4、方法不调用就不会执行,  调用方法时,传给方法的数据,必须严格匹配方法的参数情况。
          printHelloWorld();


//        5、调用有返回值的方法,有3种方式:1、可以定义变量接收结果 2、或者直接输出调用,3、甚至直接调用;
          int rs = sum(10, 20);
          System.out.println(rs);

          // 直接输出调用
          System.out.println(sum(10, 90));

          // 直接调用
          sum(100, 200);

//        6、调用无返回值的方法,只有1种方式:1、只能直接调用。
         printHelloWorld();
    }

    public static int sum(int a, int b){
        int c = a + b;
        return c;
    }

    public static void printHelloWorld(){
        for (int i = 1; i <= 3; i++) {
            System.out.println("Hello World");
        }
    }
}

MethodTest4.java

package com.zwnsyw.define;

public class MethodTest4 {
    public static void main(String[] args) {
        // 目标:掌握设计方法的技巧。
        int rs = add(5);
        System.out.println("1-5的和是:" + rs);

        int rs2 = add(100);
        System.out.println("1-100的和是:" + rs2);

        System.out.println("-----------------------------------");

        judge(10);
        judge(7);
    }

    public static void judge(int number){
        if(number % 2 == 0){
            System.out.println(number + "是一个偶数!");
        }else {
            System.out.println(number + "是一个奇数!");
        }
    }

    public static int add(int n){
        int sum = 0;
        for (int i = 1; i <= n; i++) {
            // i = 1 2 3 ... n
            sum += i;
        }
        return sum;
    }
}

方法重载

重载识别与应用。

MethodOverLoadDemo1.java

package com.zwnsyw.overload;

public class MethodOverLoadDemo1 {
    public static void main(String[] args) {
        // 目标:认识方法重载,并掌握其应用场景。
        test();
        test(100);
    }

    public static void test(){
        System.out.println("===test1===");
    }

    public static void test(int a){
        System.out.println("===test2===" + a);
    }

    void test(double a){

    }

    void test(double a, int b){
    }

    void test(int b, double a){
    }

    int test(int a, int b){
        return a + b;
    }
}

MethodTest2.java

package com.zwnsyw.overload;

public class MethodTest2 {
    public static void main(String[] args) {
        // 目标:掌握方法重载的应用场景。
        fire();
        fire("岛国2");
        fire("米国", 999);
    }

    public static void fire(){
        fire("岛国");
    }

    public static void fire(String country){
        fire(country, 1);
    }

    public static void fire(String country, int number){
        System.out.println("发射了" + number + "枚武器给" + country);
    }
}

参数传递机制

值传递的核心证据链。

MethodDemo1.java

package com.zwnsyw.parameter;

public class MethodDemo1 {
    public static void main(String[] args) {
        // 目标:理解方法的参数传递机制:值传递。
        int a = 10;
        change(a); // change(10);
        System.out.println("main:" + a); // 10
    }

    public static void change(int a){
        System.out.println("change1:" + a); // 10
        a = 20;
        System.out.println("change2:" + a); // 20
    }
}

MethodDemo2.java

package com.zwnsyw.parameter;

public class MethodDemo2 {
    public static void main(String[] args) {
        // 目标:理解引用类型的参数传递机制:值传递的。
        int[] arrs = new int[]{10, 20, 30};
        change(arrs);
        System.out.println("main:" + arrs[1]);
    }

    public static void change(int[] arrs){
        System.out.println("方法内1:" + arrs[1]);
        arrs[1] = 222;
        System.out.println("方法内2:" + arrs[1]);
    }
}

MethodTest3.java

package com.zwnsyw.parameter;

public class MethodTest3 {
    public static void main(String[] args) {
        // 目标:完成打印int类型的数组内容。
        int[] arr = {10, 30, 50, 70};
        printArray(arr);

        int[] arr2 = null;
        printArray(arr2);

        int[] arr3 = {};
        printArray(arr3);
    }

    public static void printArray(int[] arr){

        if(arr == null){
            System.out.println(arr); // null
            return; // 跳出当前方法
        }

        System.out.print("[");
        // 直接遍历接到的数组元素
        for (int i = 0; i < arr.length; i++) {
//            if(i == arr.length - 1){
//                System.out.print(arr[i]);
//            }else {
//                System.out.print(arr[i] + ", ");
//            }
            System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ", ");
        }
        System.out.println("]");
    }
}

MethodTest4.java

package com.zwnsyw.parameter;

public class MethodTest4 {
    public static void main(String[] args) {
        // 目标:完成判断两个int类型的数组是否一样。
        int[] arr1 = {10, 20, 30};
        int[] arr2 = {10, 20, 30};
        System.out.println(equals(arr1, arr2));
    }

    public static boolean equals(int[] arr1, int[] arr2){
        // 1、判断arr1和arr2是否都是null.
        if(arr1 == null && arr2 == null){
            return true; // 相等的
        }

        // 2、判断arr1是null,或者arr2是null.
        if(arr1 == null || arr2 == null) {
            return false; // 不相等
        }

        // 3、判断2个数组的长度是否一样,如果长度不一样,直接返回false.
        if(arr1.length != arr2.length){
            return false; // 不相等
        }

        // 4、两个数组的长度是一样的,接着比较它们的内容是否一样。
        // arr1 = [10, 20, 30]
        // arr2 = [10, 20, 30]
        for (int i = 0; i < arr1.length; i++) {
            // 判断当前位置2个数组的元素是否不一样,不一样直接返回false
            if(arr1[i] != arr2[i]){
                return false; // 不相等的
            }
        }
        return true; // 两个数组是一样的。
    }
}

return 关键字

return 的两种用法。

ReturnDemo1.java

package com.zwnsyw.returndemo;

public class ReturnDemo1 {
    public static void main(String[] args) {
        // 目标:掌握return单独使用:return; 在无返回值方法中的作用:跳出并立即结束当前方法的执行。
        System.out.println("程序开始。。。");
        chu(10, 0);
        System.out.println("程序结束。。。");
    }

    public static void chu(int a, int b){
        if(b == 0){
            System.out.println("您的数据有问题,不能除0~~");
            return; // 跳出并结束当前方法的执行。
        }
        int c = a / b;
        System.out.println("除法结果是:" + c);
    }
}

⬅️ 流程控制工程 🏠 00-管理项目 ➡️ 数组工程