这是一个面向调试的问题,但我一直很困惑为什么我的一些对象返回NULL值。
我这里有一个GUI,当点击一个按钮时,它会从文本字段中获取字符串,
public class USAdditionalGUI extends javax.swing.JFrame {
public String AreaCode; // declare Strings
public String Exchange;
public String LastFour;
public String State;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// On button click use getText() to collect the strings from the
//`enter code here` fields and store them into the declared strings.
AreaCode = jTextField3.getText();
Exchange = jTextField1.getText();
LastFour = jTextField2.getText();
State = jTextField4.getText();
}
下一个类为每个String变量获取方法,这就是问题所在,我创建了一个GUI类的对象并尝试访问String信息,但是当我打印出来时它仍然会出现NULL。
public class TRFUSAddressFormatting{
private String State;
private String areacode; // 3 digits
private String digitExchange; // 3
private String lastfour; // 4
USAdditionalGUI usobj = new USAdditionalGUI();
public String getState(){
State = usobj.State;
System.out.println(State); // Why does this print NULL!!?!?!
return State;
}
}
我是否正确访问了字符串?
答案 0 :(得分:2)
当你声明字符串时,你需要初始化它们,否则它们将为空。
public class USAdditionalGUI extends javax.swing.JFrame {
public String AreaCode = ""; // declare Strings
public String Exchange = "";
public String LastFour = "";
public String State = "";
或您想要的任何DEFAULT
值
public class USAdditionalGUI extends javax.swing.JFrame {
private String AreaCode = ""; // declare Strings
private String Exchange = "";
private String LastFour = "";
private String State = "";
public String getAreaCode(){
return AreaCode;
}
//and so
答案 1 :(得分:0)
代码段中的变量/字段,即AreaCode,Exchange是类的实例变量,在创建类对象时,这些变量被初始化为其默认值。对象'默认值为null,除非明确初始化并且基元有自己的默认值,如int - >因为Areacode,Exchange,LastFour,State是String类型,它们作为JVM Heap上的对象存储,因此它们被初始化为null,除非您自己显式初始化它们。