本文目录导读:

在Java中调用方法(Method)主要分为三种情况:调用同类中的方法、调用不同类中的方法、以及调用静态方法。
下面通过几个最基础、最常用的案例来演示。
调用同类中的非静态方法
在同一个类中,直接写方法名加括号即可。
public class MyClass {
public static void main(String[] args) {
// 1. 创建当前类的对象(因为main是静态的,不能直接调用非静态方法)
MyClass obj = new MyClass();
// 2. 通过对象调用方法
obj.sayHello(); // 输出:你好!
obj.add(10, 20); // 输出:30
}
// 定义一个无参无返回值的方法
public void sayHello() {
System.out.println("你好!");
}
// 定义一个有参有返回值的方法
public int add(int a, int b) {
int result = a + b;
System.out.println(result);
return result;
}
}
关键点:main 方法是 static(静态)的,不能直接调用非静态方法,必须先创建对象,再用 对象.方法名() 调用。
调用不同类中的方法
假设有两个文件:Calculator.java 和 Main.java。
Calculator.java(被调用的类)
public class Calculator {
// 非静态方法
public int multiply(int x, int y) {
return x * y;
}
// 静态方法
public static double divide(double a, double b) {
return a / b;
}
}
Main.java(主程序,调用方)
public class Main {
public static void main(String[] args) {
// 2.1 调用非静态方法:必须先创建对象
Calculator calc = new Calculator();
int result = calc.multiply(6, 7);
System.out.println("6 * 7 = " + result); // 输出:42
// 2.2 调用静态方法:直接通过类名调用
double result2 = Calculator.divide(10, 3);
System.out.println("10 / 3 = " + result2); // 输出:3.333...
}
}
关键点:
- 非静态方法:
对象名.方法名() - 静态方法:
类名.方法名()
调用静态方法(Static)
静态方法属于类本身,不属于某个对象,调用时最规范的方式是 类名.方法名()。
public class MathUtil {
// 静态方法
public static int square(int num) {
return num * num;
}
// 静态方法
public static void printInfo() {
System.out.println("这是一个工具类");
}
}
public class TestStatic {
public static void main(String[] args) {
// 正确的调用方式:类名.方法名
int sq = MathUtil.square(5);
System.out.println("5的平方是:" + sq); // 输出:25
MathUtil.printInfo(); // 输出:这是一个工具类
// 也可以使用对象调用静态方法(不推荐,会有警告)
MathUtil obj = new MathUtil();
obj.printInfo(); // 虽然能运行,但写法不规范
}
}
最佳实践:始终使用 类名.静态方法名() 来调用静态方法。
方法调用的通用格式总结
| 方法类型 | 调用方式 | 示例 |
|---|---|---|
| 同类非静态 | this.方法名() 或直接 方法名() |
sayHello() |
| 同类静态 | 直接 方法名() |
printInfo() |
| 不同类非静态 | 对象名.方法名() |
calc.multiply(2,3) |
| 不同类静态 | 类名.方法名() |
Calculator.divide(10,2) |
新手最容易犯的错误
错误1:在静态方法中直接调用非静态方法
public class Demo {
public void show() { } // 非静态
public static void main(String[] args) {
show(); // ❌ 编译报错:无法从静态上下文引用非静态方法
// ✅ 必须改为:new Demo().show();
}
}
错误2:忘记创建对象
public class Demo {
public void test() { }
public static void main(String[] args) {
Demo.test(); // ❌ 编译报错:非静态方法不能通过类名调用
// ✅ 必须改为:new Demo().test();
}
}
总结一句话
- 静态方法 →
类名.方法名()或 同类中直接方法名() - 非静态方法 → 必须
对象名.方法名()
掌握了这三种情况,你就掌握了 Java 方法调用的核心。