Java中的,new String(),"",null三种的区别

Java中的,new String(),"",null三种的区别

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

String a = new String();
String b = "";
String c = null;
testString(a);
testString(b);
testString(c);

}

private void testString(String str){
if (str == null){
Log.e(“testNull”, “null”);
}
if (str.isEmpty()){
Log.e(“testNull”, “isEmpty”);
}
if (str.equals("")){
Log.e(“testNull”, “引号”);
}
Log.e(“testNull”, “----------------”);
}

由于只会玩Android,就写了个Android的demo。效果一样啦~
打log结果为:
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: isEmpty
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: 引号
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: ----------------
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: isEmpty
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: 引号
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: ----------------
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: null

再然后str就报空指针错误了~这里可以发现好像isEmpty和"“的效果是一样滴啊。
又看了下isEmpty的源码:
public boolean isEmpty() {
return count == 0;
}
就是说只要String的文本数量为0就返回true,而”"里面文本数量就是为0。

综上所述:
    null是未分配内存空间的“空”~
    isEmpty和引号这两个“空”与null相对(即它们 != null),且都是已分配内存(好像差不多一个意思)

————————————————
版权声明:本文为CSDN博主「violet-jack」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/violetjack0808/article/details/50668195

猜你喜欢

转载自blog.csdn.net/qq_41915623/article/details/102020977