Javaでの一重引用符と二重引用符に違いはありますか?
次のように、リテラルchar
sには単一引用符を使用し、リテラルString
sには二重引用符を使用します。
char c = 'a';
String s = "hello";
他の方法で使用することはできません(Pythonなど)。
文字は単一の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 = '"';
次のコード行(Java)を考えてみましょう。
System.out.println("H"+"A"); //HA
System.out.println('H'+'a'); //169
1)最初の行はH
とA
の連結であり、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
になります。
一重引用符は文字を示し、二重引用符は文字列を示します。
char c = 'c';
'c' -----> cは文字です
文字列s = "stackoverflow";
"stackoverflow" ------> stackoverflowは文字列です(つまり、文字の場合はコレクション)