首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 方法調用機制詳解:靜態方法、實例方法、內部類調用與參數傳遞

     編輯:Java 相關知識

調用分類

方法類型調用語法適用場景
靜態方法ClassName.method() 或 method()工具類、無狀態邏輯
實例方法new ClassName().method()需要對象狀態的業務邏輯
內部類方法new OuterClass().new InnerClass().method()封裝邏輯、訪問外部類成員

代碼示例

1. 本類靜態方法

public class HelloWord {
    public static void main(String[] args) {
        for (int i=0; i<20; i++) {
            int result = Add(0, 1); // 直接調用
            System.out.println("Hello " + result);
        }
    }
    private static int Add(int x, int y) { return x+y; }
}

2. 本類實例方法

public class HelloWord {
    public static void main(String[] args) {
        HelloWord hw = new HelloWord(); // 實例化
        for (int i=0; i<20; i++) {
            int result = hw.Add(0, 1); // 通過實例調用
            System.out.println("Hello " + result);
        }
    }
    private int Add(int x, int y) { return x+y; } // 無 static
}

3. 內部類方法調用

public class Test {
    public int Add(int x, int y) { return x+y; }
    public static int Sub(int x, int y) { return x-y; }
}
public class HelloWord {
    public static void main(String[] args) {
        Test test = new Test();
        int r1 = test.Add(5, 6);   // 實例方法
        int r2 = Test.Sub(10, 3);  // 靜態方法(類名調用)
        System.out.println(r1 + ", " + r2);
    }
}

參數傳遞機制:值傳遞

Java 唯一支持 值傳遞。基本類型傳值副本,引用類型傳引用副本(指向同一對象)。

public static void swap(int a, int b) {
    int t = a; a = b; b = t; // 僅交換局部副本
}
public static void modify(User u) {
    u.setName("新名"); // 修改對象內部狀態,外部可見
    u = new User();    // 重新指向新對象,外部不可見
}

最佳實踐

  • 無狀態工具方法優先 static
  • 避免在構造器中調用可覆寫方法
  • 引用類型參數不重新賦值,專注於狀態修改
  • 大對象傳遞考慮拷貝或不可變模式
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved