簡體   English   中英

How can I use non static variable(object ref) in static method without creating object inside that static method in java?is there any way to do it?

[英]How can I use non static variable(object ref) in static method without creating object inside that static method in java?is there any way to do it?

我是 Java 的新手。 運行以下代碼時出現此錯誤

無法對非靜態字段 universityObj 進行 static 引用

但使用時不會出錯

        University universityObj = new University();

編碼:

    
        public class University {
            String name;
            int stuno;
              String university_name = "Michigan University";
            University  universityObj;
            public static void main(String[] args)
            {
                
                University universityObj = new University();
                universityObj.name="Robert";
                universityObj.stuno=12;
                System.out.println(universityObj.name);
                System.out.println(University.university_name);
                display();
            }
            public void nonStaticDisplay()
            {
                System.out.println(name);
              
                System.out.println(stuno);
                
            }
           public static void display()
           {
               universityObj = new University();
               System.out.println(universityObj.name);
           }
        }

讓我們一步一步來 go。

  1. display()方法應該是非靜態的,因為它屬於大學 class 的特定實例,並且應該在其上使用。 無需創建某些 class 的實例即可使用 Static 方法。 但是在display()方法的情況下,這樣做沒有意義,因為您需要顯示大學名稱,首先應該創建和分配它。

  2. 在您的情況下,在 class 內創建 object 實例University universityObj不是一個好主意。 最好只保留在 main 方法中。

  3. university_name名稱不是 static,因此如果沒有 class 實例(對象),您將無法訪問它,就像您現在正在做的那樣。 University.university_name應更改為universityObj.university_name

這些步驟將把我們帶到這樣一段代碼:

public class University {
    String name;
    int stuno;
    String university_name = "Michigan University";

    public static void main(String[] args) {

        University universityObj = new University();
        universityObj.name = "Robert";
        universityObj.stuno = 12;
        System.out.println(universityObj.name);
        System.out.println(universityObj.university_name);
        universityObj.display();
    }

    public void display() {
        System.out.println(name);
        System.out.println(stuno);
    }
}

您應該考慮的其他事項:

  1. 閱讀有關封裝的信息。

  2. 在 IDE 中使用代碼格式。 IntelliJ IDEA 的示例

  3. 檢查Object class 中的toString()方法。 它完全適用於您嘗試使用display()方法實現的目標。

可以簡單地傳遞對要顯示的實例的引用。 喜歡,

public static void display(University universityObj)
{
    System.out.println(universityObj.name);
}

只需制作變量 static。 static 只是指變量是保存在堆棧中還是堆中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM