web-dev-qa-db-ja.com

Javaでの一重引用符と二重引用符に違いはありますか?

Javaでの一重引用符と二重引用符に違いはありますか?

93
pupeno

次のように、リテラルcharsには単一引用符を使用し、リテラルStringsには二重引用符を使用します。

char c = 'a';
String s = "hello";

他の方法で使用することはできません(Pythonなど)。

135
Yuval Adam

文字は単一のUTF-16文字です。つまり、文字、数字、句読点、タブ、スペースなどです。

文字リテラルは、次のように単一引用符で囲まれた単一の1文字です。

char myCharacter = 'g'; 

またはエスケープシーケンス、あるいはユニコードエスケープシーケンス:

char a = '\t';    // Escape sequence: tab
char b = '\177'   // Escape sequence, octal.
char c = '\u03a9' // Unicode escape sequence. 

Unicodeエスケープシーケンスはコンパイルの非常に早い段階で処理されるため、 '\ u00A'を使用するとコンパイラエラーが発生することに注意してください。特殊なシンボルの場合は、代わりにエスケープシーケンス、つまり '\ u00A'ではなく '\ n'を使用することをお勧めします。

Stringを二重引用符で囲むには、「二重引用符エスケープシーケンス」(\")それ以外の場合は文字列を終了する文字列内。
例えば:

System.out.println("And then Jim said, \"Who's at the door?\"");

単一引用符内の二重引用符をエスケープする必要はありません。
次の行はJavaで有効です。

char doublequote = '"';
35
VonC

次のコード行(Java)を考えてみましょう。

System.out.println("H"+"A"); //HA
System.out.println('H'+'a'); //169

1)最初の行はHAの連結であり、HA(文字列リテラル)になります

2)次に、ASCII Table H = 72およびa = 97に従って2つのcharの値を追加しています。つまり、72+97それは('H'+'a')

3)別のケースを考えてみましょう:

System.out.println("A"+'N');//AN

この場合、文字列Aとchar Nの連結を処理し、結果としてANになります。

10
Eddy Bayonne

一重引用符は文字を示し、二重引用符は文字列を示します。

char c = 'c';

'c' -----> cは文字です

文字列s = "stackoverflow";

"stackoverflow" ------> stackoverflowは文字列です(つまり、文字の場合はコレクション)

4
Horse_1995