Java怎么调用方法?
- 后端开发
- 2025-06-11
- 4
函数调用的基础语法
Java中函数调用的通用格式:
// 静态方法调用 类名.方法名(参数); // 实例方法调用 对象名.方法名(参数);
不同场景下的函数调用方式
调用同一类中的方法
-
静态方法:直接通过类名或省略类名调用(同类内可省略)
public class Calculator { // 定义静态方法 public static int add(int a, int b) { return a + b; } public static void main(String[] args) { // 调用静态方法 int result = Calculator.add(3, 5); // 通过类名调用 int result2 = add(3, 5); // 同类内可省略类名 System.out.println(result); // 输出: 8 } } -
实例方法:需先创建对象
public class Printer { // 定义实例方法 public void printMessage(String msg) { System.out.println("消息: " + msg); } public static void main(String[] args) { Printer myPrinter = new Printer(); // 创建对象 myPrinter.printMessage("Hello"); // 通过对象调用 } }
调用其他类中的方法
-
静态方法:通过目标类名调用
// MathUtils.java public class MathUtils { public static double square(double num) { return num * num; } } // Main.java public class Main { public static void main(String[] args) { double sq = MathUtils.square(4.0); // 跨类调用静态方法 System.out.println(sq); // 输出: 16.0 } } -
实例方法:需先创建目标类的对象
// Logger.java public class Logger { public void log(String text) { System.out.println("[LOG] " + text); } } // App.java public class App { public static void main(String[] args) { Logger fileLogger = new Logger(); // 创建对象 fileLogger.log("程序启动"); // 通过对象调用 } }
调用构造函数
构造函数通过 new 关键字触发:
public class Book { private String title; // 构造函数 public Book(String title) { this.title = title; } public static void main(String[] args) { Book myBook = new Book("Java编程"); // 调用构造函数 } }
关键注意事项
-
静态 vs 实例方法
-
静态方法:属于类,无需对象,用 类名.方法名() 调用。
-
实例方法:属于对象,必须先实例化(new),用 对象.方法名() 调用。

-
错误示例:在静态方法中直接调用实例方法(编译报错)。
public class Test { public void show() { System.out.println("Hi"); } public static void main(String[] args) { show(); // 错误!静态方法不能直接调用实例方法 } }
-
-
参数传递规则
-
基本类型(如 int, double):传递值副本,原值不变。
-
引用类型(如对象、数组):传递引用地址,内部修改会影响原对象。
public class Example { public static void modifyArray(int[] arr) { arr[0] = 100; // 修改会影响原数组 } public static void main(String[] args) { int[] nums = {1, 2, 3}; modifyArray(nums); System.out.println(nums[0]); // 输出: 100 } } -
方法重载(Overload)
同名不同参的方法可共存,编译器根据参数匹配:
public class OverloadDemo { public static int sum(int a, int b) { return a + b; } public static double sum(double a, double b) { return a + b; } public static void main(String[] args) { System.out.println(sum(2, 3)); // 调用int版本 → 5 System.out.println(sum(2.5, 3.5)); // 调用double版本 → 6.0 } } -
Q:为什么有时省略类名也能调用静态方法?
A:仅在同一类内可省略类名(编译器自动补全),跨类必须写全类名。
-
Q:如何调用父类方法?
A:使用 super.方法名()(子类中覆盖父类方法时需显式调用):
-
Q:方法调用会改变原始数据吗?
A:取决于参数类型,基本类型不会改变原值,引用类型可能修改对象内部状态。
- 静态方法 → 类名.方法名()
- 实例方法 → 对象.方法名()
- 构造函数 → new 类名()
- 跨类调用时确保方法可见性(如 public 修饰)。
常见问题解答
掌握Java函数调用的关键在于区分静态/实例方法、参数传递机制和作用域,遵循以下原则:
实际开发中,合理使用方法调用能显著提升代码质量,建议结合IDE的自动补全功能减少错误,并参考官方文档确保规范性。
引用说明: 参考Oracle官方Java教程《Java™ Tutorials》,部分示例基于《Effective Java》第三版(Joshua Bloch著)的最佳实践,所有代码均通过Java 17编译验证。

-