Java非构造方法(普通方法)

一、什么是普通方法

普通方法就是定义在类里面、用来描述对象能"做什么"的代码块。

构造方法是"出生时的初始化",普通方法是"出生后能干的事"。

点击查看代码
class Student {
    String name;
    int age;
    
    // 构造方法——出生设置
    Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // 普通方法——出生后的行为
    void read() {
        System.out.println(name + "正在读书");
    }
}

二、普通方法的语法结构
[权限修饰符] [static] 返回值类型 方法名([参数列表]) {
// 方法体
return 返回值; // 如果有返回值>
}

逐个拆开看:

组成部分 说明 是否必须
权限修饰符 public / private / protected / 默认 可选(默认是包可见)
static 加了属于类,不加属于对象 可选
返回值类型 void(无返回值)或具体类型(int/String 等) 必须写​
方法名 驼峰命名,见名知意 必须​
参数列表 传入的数据,可为空 可选
return 有返回值时必须,无返回值时可省略或 return; 视情况

三、与构造方法的对比

对比项 构造方法 普通方法
方法名 与类名一致 自定义
返回值 没有(连 void 都不写) 必须声明(写 void 或具体类型)
调用时机 new 时自动调用 必须手动调用
调用方式 new 类名() 对象名.方法名()
能否重载 ✅ 能 ✅ 能
能否被 static 修饰 ❌ 不能 ✅ 能

四、普通方法的调用
4.1 非 static 方法(实例方法)

必须通过对象调用:

点击查看代码
Student stu = new Student("小明", 20);
stu.read();        // ✅ 通过对象调用
stu.setAge(21);    // ✅

4.2 static 方法(类方法)

通过类名直接调用,不需要 new:

点击查看代码
class MathUtil {
    static int add(int a, int b) {
        return a + b;
    }
}

// 调用
int result = MathUtil.add(3, 5);  // ✅ 不用 new

4.3 方法内部调用

同一类里的方法可以互相调用:

点击查看代码
class Student {
    String name;
    
    void read() {
        System.out.println(name + "正在读书");
        writeNote();  // ✅ 直接调用同类其他方法
    }
    
    void writeNote() {
        System.out.println(name + "在做笔记");
    }
}

五、返回值
5.1 有返回值

点击查看代码
int getAge() {
    return this.age;
}

调用时可以接收:

点击查看代码
int a = stu.getAge();
System.out.println(a);

5.2 无返回值(void)

点击查看代码
void read() {
    System.out.println(name + "正在读书");
    // 不需要 return,或者写 return; 提前结束
}
点击查看代码
class Student {
    // 版本1:输出一句话
    void read() {
        System.out.println(name + "正在读书");
    }
    
    // 版本2:读指定书名
    void read(String book) {
        System.out.println(name + "正在读《" + book + "》");
    }
    
    // 版本3:读指定书若干页
    void read(String book, int pages) {
        System.out.println(name + "正在读《" + book + "》,已读" + pages + "页");
    }
}

调用时编译器自动匹配:

点击查看代码
stu.read();              // 调用版本1
stu.read("Java入门");     // 调用版本2
stu.read("Java入门", 50); // 调用版本3

七、参数传递
7.1 基本类型——值传递

点击查看代码
void change(int x) {
    x = 100;
}

int a = 10;
stu.change(a);
System.out.println(a);  // 还是 10,没变

7.2 引用类型——地址的拷贝

点击查看代码
void changeAge(Student s) {
    s.age = 100;
}

Student stu = new Student("小明", 20);
stu.changeAge(stu);
System.out.println(stu.age);  // 100,变了
传的是地址值的拷贝,两个引用指向同一个对象,所以能改对象内容。

八、常见错误

错误 原因 修正
方法里写 void 但又有 return 值 void 表示无返回值 去掉 void 写具体类型,或去掉 return 的值
非 static 方法在 main 里直接调用 main 是 static,不能直接调非 static 先 new 对象再调用
方法名和类名一样但写了返回值 这不是构造方法,是普通方法 确认意图:要构造方法就删返回值,要普通方法就改名
重载时只改返回值不改参数 不算重载,编译报错 改参数列表
忘记 return 声明了返回值但没写 return 补上 return 对应类型的值

九、核心结论
1.普通方法描述对象的行为,有返回值类型(写 void 或具体类型)。
2.非 static 方法必须通过对象调用,static 方法通过类名调用。
3.普通方法可以重载,规则跟构造方法一样——看参数列表。
4.Java 只有值传递,引用类型传的是地址的拷贝。
5.方法里 this 同样指向当前对象(非 static 方法中)。

posted @ 2026-10-17 09:40  余子馨  阅读(7)  评论(0)    收藏  举报