10

約 7 ~ 8 年前のプログラミングの本から、string.length == 0空の文字列をチェックするよりも高速なチェック方法を読みました。string == ""個人的には、このステートメントの方が簡単で読みやすいと思うので、そのステートメントが今日でも当てはまるかどうか (または、これまでまったく真実であったかどうか) を考えています。主に .NET や Java などの高級言語を扱います。

4

5 に答える 5

7

を使用するだけstring.isEmpty()です。

"".equals(string)( null がある場合は、修正が必要なため、おそらくプログラムをクラッシュさせるバグを示しているため、拒否します。私は null に寛容ではありません。)

于 2012-09-25T22:18:50.223 に答える
7

Java でそのテストを行う最良の方法は、

"".equals(string)

文字列が null の場合を処理するためです。

どちらが速いかというと、どちらでも構わないというのが答えだと思います。どちらも非常に高速で、どちらが実際に最速かは、内部コンパイラの実装によって異なります。

于 2012-09-25T20:02:03.903 に答える
4

通常、文字列オブジェクトはその長さを格納するため、整数の取得と比較は非常に高速であり、最悪の場合、長さをチェックして文字をループする必要がある equals() よりもメモリ アクセスが少なくなります。

とにかく、最近では、文字列の equals() メソッドも最初に長さをチェックする必要があるため、長さをチェックするのとほぼ同じ速度になるはずです。

Javaの部分に等しい(http://www.docjar.com/html/api/java/lang/String.java.html):

int n = count;
if (n == anotherString.count) {...}

Objective-C (http://www.opensource.apple.com/source/CF/CF-476.15/CFString.c) の一部に等しい- NSString は CFString に基づいています:

if (len1 != __CFStrLength2(str2, contents2)) return false;
于 2012-10-02T17:28:23.000 に答える
-1

"".isEmpty()空の文字列をチェックするために使用します。うまく機能し、null オブジェクトに対しても「true」を返します。

String.isEmpty()

.equals() は、NullPointerExceptionnull の場合に をスローするため、煩わしい場合があります。

また、これが Java API にあると仮定すると、おそらくこれが最速の方法であると想定しても問題ありません。

于 2012-09-25T20:06:10.857 に答える