String中默认值为"null"

Day*_*man -3 java string null

我有这门课

public class Model {    
    private String a;
    private String b;

    public synchronized String getA() {
        return a;
    }
    public synchronized void setA(String a) {
        this.a = a;
    }
    public synchronized String getB() {
        return b;
    }
    public synchronized void setB(String b) {
        this.b = b;
    }   
}
Run Code Online (Sandbox Code Playgroud)

我试图得到的值a,我知道默认情况下这个变量初始化为null.但是,如果我调用该getA()方法,之后这个变量是否有字符串"null"(不是null除了String)?所以a.equals("null") == true.

public static void main(String[] args) throws ParseException {      
Model m = new Model();
String test = m.getA();
m.getA().equals("null");//No Exception occurs
Run Code Online (Sandbox Code Playgroud)

}

事实上,我评估String的代码是Android应用程序的一部分:

    mAirline = (Airline) extras.getSerializable("airline");     
    @SuppressWarnings("unused")
    String test = mAirline.getPhone(); //(1)
    String test2 = mAirline.getHref(); //(2)
Run Code Online (Sandbox Code Playgroud)

如果我检查mAirline in(1)mAirline的字段为null,但在(2)中有一些为"null"而我的get方法是

    public synchronized String getPhone() {
    return phone;
}
Run Code Online (Sandbox Code Playgroud)

Joa*_*uer 5

不,使用您向我们展示的代码,您不可能自动获得String "null".

但请注意,某些方法转换null"null".最值得注意的例子是PrintWriter.println()(如System.out.println())和String.valueOf().

System.out.println(null);
System.out.println("null".equals(String.valueOf(null)));
Run Code Online (Sandbox Code Playgroud)

这些线将打印null(即,4个字符)和true分别