[セットトップ]JavaにおけるStringクラスのisEmptyメソッド、nullおよび「」の違い


いつもStringのこの3つの空に対してとても気絶して、ちょうど同僚は私に聞いて、私も勉強します.他の人のブログから見たのは、isEmpty()にメモリスペースが割り当てられ、値が空で、絶対的な空です.は、メモリ領域が割り当てられた値(値=NULL)です.値はNULL文字列で、相対的にNULLです.値(値=NULL文字列)nullは未割り当てメモリ領域で、値はありません.値はありません(値は存在しません)
しかし、私はまだぼんやりしていたので、demoの検証を書きました.
@Override
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を書きました.効果は同じですね~
ログの結果は次のとおりです.
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と引用符の2つの「空」がnullと対向(すなわちそれら!=null)しており、いずれも割り当てられたメモリである(PS:isEmptyと「」がどのように異なるかは不明であり、知っているパートナーはコメントをお願いします.ありがとうございます~)