访问类字符串返回NULL

时间:2013-11-15 16:49:26

标签: java

这是一个面向调试的问题,但我一直很困惑为什么我的一些对象返回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;
}


}                         

我是否正确访问了字符串?

2 个答案:

答案 0 :(得分:2)

当你声明字符串时,你需要初始化它们,否则它们将为空。

public class USAdditionalGUI extends javax.swing.JFrame {

    public String AreaCode = ""; // declare Strings
    public String Exchange = "";
    public String LastFour = "";
    public String State = "";

或您想要的任何DEFAULT

不过,我建议你将它们声明为私有并实现一个get方法来检索它们的信息

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,除非您自己显式初始化它们。