如何初始化变量并在整个java类中使用它

时间:2014-08-06 15:14:42

标签: java

我是java的新手。 我想知道如何在整个java类中使用变量并保持它的值。假设在一个方法中我用一个值填充变量,我想在另一个方法中使用它的值。

public class Test {
    public String id;

    public void includeClient() {
        String id = baseClass.createCleint();
    }

    public void removeClient() {
        System.out.println(id);
    }
}

在第二个函数中它返回null。有什么想法吗?

5 个答案:

答案 0 :(得分:4)

在方法includeClient()中,您将值赋给了与实例变量同名的局部变量。另一种方法(BTW,不能与第一种方法具有相同的签名)看到实例变量,它仍然是空的。

将其更改为:

public void includeClient() {
    id = baseClass.createCleint();
}

答案 1 :(得分:1)

String 移除String id = baseClass.createCleint();,因为它是方法的本地变量,当您调用方法 时,将被赋予该值并收集垃圾执行方法后,无法在方法外部访问。

简而言之,您没有为在类级别声明的变量赋值,而是在创建另一个变量。您最好使用Constructor来执行初始化。

其次你宣布public void includeClient() {两次,我打赌这是错字。

public class Test {
    public String id;

    public void includeClient() {
        id = baseClass.createCleint();
    }
}

答案 2 :(得分:1)

    public class Test {
        public String id;

        public void includeClient() {
            String id2 = baseClass.createCleint();
            System.out.println(id2);
            id = id2;
         }

        public void includeClient2() {
            System.out.println(id);
        }
    }

用它来理解和测试。

所做的更改列表 -

  1. 更改了第二个方法名称以使其唯一
  2. 将返回值分配给名为不同于类成员变量的局部变量。
  3. 首先打印返回值以检查返回的内容
  4. 将本地值分配给成员变量。
  5. 注意:你仍然需要阅读很多关于java的内容。继续练习。

答案 3 :(得分:0)

替换:

String id = baseClass.createCleint();

通过

this.id = baseClass.createCleint();

id = baseClass.createCleint();

答案 4 :(得分:0)

需要注意的一点是,有两种方法可以共享这样的变量 - 您可以让该类的每个对象都有自己的变量副本,或者您可以拥有< em>类的每个对象共享同一个变量。关键字静态可让您执行后者:

class Test {
  public String message;
}

class TestStatic {
  public static String message;
}

如果你有第一个类的实例,它们的行为就像每个实例都有自己的message

Test testA = new Test();
Test testB = new Test();

testA.message = "Hello!";
testB.message = "Greetings!";

System.out.println(testA.message);
System.out.println(testB.message);

但是对于第二个类,会发生的是类本身有一个message,并且该类的所有实例都引用它,所以只有一个message在所有人之间共享:

TestStatic testA = new TestStatic();
TestStatic testB = new TestStatic();

TestStatic.message = "Hello!";

System.out.println(testA.message);
System.out.println(testB.message);

请注意,我们未使用上述messagetestA.message设置testB.message - 我们使用带有TestStatic.message的类设置 。这是因为message并非真正属于testAtestB,它属于该类,testAtestB简单可以访问其类成员。