4

静的文字列定数で識別される多くのコマンドを使用するCコードを作成しました。

static char* KCmdA = "commandA"
static char* KCmdB = "commandB"
static char* KCmdC = "commandC"

CIでは、たとえば2つの文字列をstrcmp(A、B)と比較できますが、静的文字列識別子を介してこれらのコマンドを参照するだけなので、unknowCMDは静的文字列の1つへのポインタにしかなり得ないことがわかっているため、ポインタの不等式のみをチェックする方が高速です。文字列。

switch(unknowCMD)
{
    case KCmdA:
    ...
    case KCmdB:
    ...
}

Javaでは、strcmpと同等のメソッドは次のようになります。

unknowCMD.equals(KCmdA)

Javaにポインタの同等性に相当するものはありますか?私はJavaが参照のみを使用することを知っています。実際に文字列を比較せずに、これらの参照を同等性テストに使用することは可能ですか?

これが明らかな場合は申し訳ありませんが、ドキュメントを確認しましたが、明確な答えは見つかりませんでした。

4

3 に答える 3

6

文字列参照の等価性を比較する場合==

if(str1==str2){

}
于 2012-07-11T10:24:11.323 に答える
4

を使用できます==が、危険で壊れやすいです。

Strings の場合、最初に行うことequals()は参照の等価性をテストすることであることに注意してください。

于 2012-07-11T10:24:33.707 に答える
3

ここで静的文字列を使用している方法は、列挙型を使用する方がよいと思います。.equals と == を使用してそれらを比較できます。スイッチケースでも列挙型を使用できます。

于 2012-07-11T10:31:22.063 に答える