--- title: "04-方法工程" created: 2025-12-02 tags: - Java --- # 方法工程 > [!note] 本篇定位 > 本篇聚合 IDEA 工程 `method-app` 的全部源码练习(2025-12 学),按包分节**全文收录**——当年的学习注释(`// 目标:…` `// 需求:…`)原样保留,是最真实的练习轨迹。工程怎么建、模块/包/类怎么管理见 [[00-管理项目|00-管理项目]]。 **包含 11 个 .java 练习**,目录结构: ```text 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 ```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 ```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 ```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 ```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 ```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 ```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 ```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 ```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 ```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 ```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 ```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); } } ``` --- ⬅️ [[03-流程控制工程|流程控制工程]] 🏠 [[00-管理项目|00-管理项目]] ➡️ [[05-数组工程|数组工程]]