Java 在构造函数中初始化的变量的作用域
如果你创建了一个类,比如Java 在构造函数中初始化的变量的作用域,java,Java,如果你创建了一个类,比如 public class Supplier { String s; public Supplier() { s = "MyString"; } } 现在,如果您尝试访问同一类中的方法中的。当您运行代码时,变量s仍然保持为null 我想知道构造函数是如何影响变量的。如上所述,这种行为不可能真正发生。有几种方法可以使变量仍然为null: 1) 您正在设置变量之前调用有问题的方法。例如,考虑这个类和方法: public class
public class Supplier {
String s;
public Supplier() {
s = "MyString";
}
}
现在,如果您尝试访问同一类中的方法中的。当您运行代码时,变量s仍然保持为null
我想知道构造函数是如何影响变量的。如上所述,这种行为不可能真正发生。有几种方法可以使变量仍然为null: 1) 您正在设置变量之前调用有问题的方法。例如,考虑这个类和方法:
public class MyClass{
private String string;
public MyClass(){
method();
string = "Hello";
}
public void method(){
System.out.println(string);
}
}
使用MyClass m=new MyClass()构造对象
将打印null
,因为在调用method()
时,string
尚未设置
2) 你调用了错误的构造函数
public class MyClass{
private String string;
public MyClass(){
method();
}
public MyClass(String s){
string = s;
method();
}
public void method(){
System.out.println(string);
}
}
使用
MyClass m=new MyClass()构造对象
将打印null
,因为在调用method()
时,string
尚未设置,因为我们调用了错误的构造函数。使用MyClass m=newmyclass(“Hello”)构造代码>将解决此问题。不可生产。这段代码应该可以工作。“如果您尝试在同一类中的方法中访问s。当您运行代码时,变量s仍然保持为null。”这对我来说很好。请在代码示例中添加此方法。一个非常常见的错误是,在将实例字段初始化为传递给构造函数的同名参数值时,忘记使用“this”关键字,但是您的示例代码没有这个问题。要在问题中添加更多信息,如正确使用选项。编辑:将标题从“构造函数中声明的变量的范围”更改为“构造函数中初始化的变量的范围”。我在找前者,但这不是。非常感谢。你正中要害。上帝保佑。