2

なぜ a は b と違うのですか?

    String a = "BuildGUID10035\0528\0440";
    String b = "BuildGUID10035" + '\0' + 528  + '\0' + 440;

    System.out.println("A: " + a);
    System.out.println("B: " + b);
    System.out.println(a.equals(b));
4

4 に答える 4

10

\052最初の文字列では、単一の8進数のエスケープシーケンスとして解釈されるため、これらは異なります(同様に\044)。

次の2つの文字列は同等に比較されます。

String a = "BuildGUID10035\000528\000440";
String b = "BuildGUID10035" + '\0' + 528  + '\0' + 440;

(でを置き換えまし\0\000a

于 2012-05-15T15:01:50.163 に答える
2

\ に続く 3 桁の数字は、8 進数のエスケープ シーケンスを表します。したがって、文字列 a は BuildGUID10035*8$0 になり、文字列 b とは等しくありません。

于 2012-05-15T16:17:05.430 に答える
2

\052 および \044 は、文字の 8 進表現です。\ と 3 桁の数字で始まるものはすべて、8 進形式の文字と見なされます。したがって、2 つの文字列は等しくありません。

于 2012-05-15T15:11:39.597 に答える
1

\0 はヌル文字のプレースホルダーです。したがって、最初の文字列は \052 ... \044 として解釈され、2 番目の文字列は BuildGUID10035{NULL}528{NULL}440 となります。

(明らかに、私が言いたいことの例として NULL を使用しました...)

\052 と \044 はそれ自体で解釈されます

于 2012-05-15T15:04:15.880 に答える