Java 成员方法(方法)全套完整详解

一、方法是什么

方法(也叫函数):将完成某个独立功能的多行代码封装成一个代码单元。

方法属于类的成员,因此也称为成员方法

方法核心作用

  • 代码复用:重复逻辑只写一次,多处调用

  • 结构清晰:拆分复杂业务,解耦、易读、易维护

  • 统一维护:改一处,所有调用处全部生效

方法只有两步:方法定义(声明) + 方法调用(执行)

二、方法标准声明语法

标准格式

修饰符 返回值类型 方法名(参数列表){
    // 方法体:具体业务逻辑代码
    return 返回值; // 有返回值必须写
}

各部分详细说明

  1. 修饰符:控制方法访问权限,常用 public / private / static

  2. 返回值类型

    1. 有结果返回:写具体数据类型 int / double / boolean / String

    2. 无结果返回:固定写 void,不需要 return 数据(可单独写 return; 提前结束方法)

  3. 方法名:小驼峰命名、见名知意,如 getSum、sayHello、printInfo

  4. 参数列表:接收外部传入数据,多个参数逗号分隔;无参数空括号 ()

  5. 方法体:实现功能的核心代码

  6. return:结束当前方法,并将结果返回给调用处

静态方法说明(初学者重点)

main 方法是静态方法,静态方法中只能直接调用静态方法

所以初学阶段自定义方法统一加上 static,避免报错。

三、方法四大分类(无/有参、无/有返回值)

1. 无参无返回值(void)

固定功能、无需传入数据、无需返回结果,多用于打印、执行固定逻辑。

// 无参无返回值方法
public static void sayHello(){
    System.out.println("你好,这是自定义方法");
}

// 调用
public static void main(String[] args) {
    sayHello();
}

2. 无参有返回值

无需传参,方法内部计算后返回结果。

3. 有参无返回值

接收外部数据,根据参数执行逻辑,不返回结果。

// 根据次数打印内容
public static void printMsg(int count, String msg){
    for (int i = 0; i < count; i++) {
        System.out.println(msg);
    }
}

// 调用
printMsg(3, "Java 方法学习");

4. 有参有返回值(最常用)

接收参数参与计算,最终返回运算结果。

// 两数求和
public static int getSum(int a, int b){
    return a + b;
}

// 调用接收结果
int res = getSum(10, 20);
System.out.println(res);

四、方法核心硬性规则(必记)

  • 方法不能嵌套定义:方法只能写在类中、方法外,main 里面不能定义方法

  • 定义不执行,调用才执行:方法声明只是封装逻辑,不会自动运行

  • void 方法不能返回数据:只能写 return; 提前终止方法

  • 有返回值方法必须全部分支 return:所有执行路径必须有返回值,否则编译报错

  • 实参、形参必须匹配:数量、类型、顺序必须一致

  • 参数作用域仅限方法内部:方法执行结束,参数变量销毁

五、形参 & 实参详解

概念区分

  • 形参:方法定义处括号内的变量,只是占位符

  • 实参:方法调用时传入的真实数据

对照示例

// 形参:a、b
public static int getSum(int a, int b){
    return a + b;
}

// 实参:10、20
getSum(10, 20);

六、返回值深度讲解 & 常见报错

return 两大作用

  1. 返回数据给调用处

  2. 立刻终止当前方法,后续代码不再执行

经典报错:部分分支无返回值

错误写法(编译报错):

public static boolean demo(int a){
    if (a > 0){
        return true;
    }
    // if不成立时,无return,报错
}

正确写法(二选一)

// 方式1:补全 else
public static boolean demo(int a){
    if (a > 0) {
        return true;
    } else {
        return false;
    }
}

// 方式2:末尾兜底 return(推荐简洁)
public static boolean demo(int a){
    if (a > 0) {
        return true;
    }
    return false;
}

返回值三种使用方式

  1. 变量接收(推荐)boolean res = demo(10);

  2. 直接打印System.out.println(demo(10));

  3. 直接丢弃(不推荐)demo(10);

七、实战案例:判断数字能否同时被 2、3、5 整除

需求:

  • 接收一个数字参数

  • 判断是否能同时被 2、3、5 整除(能被30整除)

  • 不满足时打印具体缺失条件

  • 满足返回 true,不满足返回 false

完整可运行代码

import java.util.Scanner;

public class MethodTest {

    // 判断数字是否同时被2、3、5整除
    public static boolean checkNum(int num) {
        // 全部满足直接返回true
        if (num % 2 == 0 && num % 3 == 0 && num % 5 == 0) {
            return true;
        } else {
            // 逐个判断不满足条件并提示
            if (num % 2 != 0) {
                System.out.println("不能被2整除");
            }
            if (num % 3 != 0) {
                System.out.println("不能被3整除");
            }
            if (num % 5 != 0) {
                System.out.println("不能被5整除");
            }
            return false;
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int num = sc.nextInt();

        boolean result = checkNum(num);
        System.out.println(num + " 能否同时被2、3、5整除:" + result);
    }
}

八、方法参数传递机制(Java 纯值传递)

Java 只有一种传参方式:值传递

1. 基本数据类型传参

传递的是 数值副本,方法内修改形参,不会影响外部实参。

public static void change(int x){
    x = 100;
    System.out.println("方法内x:" + x);
}

public static void main(String[] args) {
    int a = 10;
    change(a);
    System.out.println("方法外a:" + a); // 仍然是10
}

2. 引用类型传参(对象、数组)

传递的是 地址值副本

  • 形参和实参指向同一个堆内存对象

  • 修改对象内部数据,外部可见

  • 方法内给形参重新 new 对象,不会影响外部实参

九、全篇核心口诀(速记)

  • 方法封装重复代码,定义不执行调用才跑

  • void 无返回有返回必写 return,所有分支不能少

  • 形参占位实参真值,顺序类型数量要一致

  • Java 传参全是值传,基本改不动、对象内容可改

posted @ 2026-08-10 10:51  狂浪的狼  阅读(15)  评论(0)    收藏  举报