如何在全局变量中设置值?

时间:2014-06-27 11:06:27

标签: java

导入后我已将变量声明在顶部

String sk5;

sk5中的推杆值

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

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

打印值很好,但是当我在其他函数中使用此变量时,它会打印出NULL。 请建议我如何解决这个问题。

3 个答案:

答案 0 :(得分:1)

此问题的最常见原因是假设所有sk5变量都相同。如果您有多个变量或多个实例,则实际上有多个具有相同名称的字段/变量。

检查此问题的最简单方法是查看代码在调试器中执行操作时所执行的操作。

enter image description here

您可以在以下示例中看到,您有三个名为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 

答案 1 :(得分:0)

我假设您要定义一个类变量,因此您应该使用

public static String sk5;

但是定义一个非最终的公共静态变量是bad code style。 如果要在其他类中使用类变量,则应实现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();

答案 2 :(得分:-1)

您使用的是C#吗?

通常,全局变量在Class定义之后定义为direclty,如下所示:

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

}

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

} }

编辑:嗯,有人更快,但变量不需要是静态的。

和平。