我是java的新手。 我想知道如何在整个java类中使用变量并保持它的值。假设在一个方法中我用一个值填充变量,我想在另一个方法中使用它的值。
public class Test {
public String id;
public void includeClient() {
String id = baseClass.createCleint();
}
public void removeClient() {
System.out.println(id);
}
}
在第二个函数中它返回null。有什么想法吗?
答案 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);
}
}
用它来理解和测试。
所做的更改列表 -
注意:你仍然需要阅读很多关于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);
请注意,我们未使用上述message
或testA.message
设置testB.message
- 我们使用带有TestStatic.message
的类设置 。这是因为message
并非真正属于testA
或testB
,它属于该类,testA
和testB
简单可以访问其类成员。