簡體   English   中英

如何在全局變量中設置值?

[英]How to set Value in Global Variable?

導入后我在頂部聲明了變量

String sk5;

sk5中的推算值

sk5 = s.substring(s.lastIndexOf("-")+1).replace("]", "");

        System.out.println("Checking sk5->"+sk5);

它很好地打印了值,但是當我在其他函數中使用此變量時,它將打印NULL。 請建議我如何解決此問題。

導致此問題的最常見原因是所有sk5變量都相同的假設。 如果您有多個變量或多個實例,則實際上您有多個具有相同名稱的字段/變量。

最簡單的檢查方法是查看在調試器中逐步執行代碼時所執行的代碼。

在此處輸入圖片說明

您可以在下面的示例中看到,您有三個名為sk5的變量,具有三個不同的值。

class MyClass {
   int sk5;

   public static void main(String... s) {
     MyClass a = new MyClass(), b = new MyClass();
     a.sk5 = 1;
     b.sk5 = 2;
     int sk5 = 3;
     System.out.println(a.sk5+" " + b.sk5 + " " + sk5);
   }
}

版畫

1 2 3 

我假設你想定義一個類變量,所以你應該使用

public static String sk5;

但是定義一個不是final的公共靜態變量是錯誤的代碼風格 如果要在其他類中使用類變量,則應實現類似的getter-Method

private static String sk5;

public static String getSk5(){
   return sk5;
}

而且靜態變量仍然不是最好的。 嘗試檢查Singleton ,具體取決於我們的用例

從我的角度來看,最好的方法是定義

private String sk5;

public String getSk5(){
   return sk5;
}

所以你可以打電話

TestClass s = new TestClass();
String t = s.getSk5();

您在使用C#嗎?

通常,在類定義之后直接定義全局變量,如下所示:

    class MyNewClass{
     public string newglobalval;
   public MyNewClass(){
    newglobalval = "Hello";

}

  public void ShowGlobalVal(){
    Console.Write(newglobalval);

}}

編輯:嗯,有人更快,但是變量不需要是靜態的。

和平。

暫無
暫無

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

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