文字列リテラルもオブジェクト

Javaでの空かどうかの判定は、どちらがいいのでしょう?

1. str.equals("")
2. str.length() == 0

最初の方法はタイプが楽ですが、効率が悪そうです。二つ目の方法は速そうですが、空文字の判定かどうかがわかりづらいです。

strがnullだとヌルポがでてしまうので、

 "".equals(str)

のほうがよい。空文字リテラルからいきなりメソッドを呼ぶのが、ちょっとかっこいいのも魅力的。まあ、邪悪さはないけど。