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


101

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

回答:


146

charのように、リテラルに一重引用符を使用し、リテラルに二重引用符を使用しますString

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

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


10
そしてもちろん、この振る舞いはCから借用したものです(おそらく他の場所で取得したと思います)。
JesperE 2009年

私にとって、そのintようなコンテキストでは、アポストロフィリテラルは自動的にキャストされます。したがって、それはである必要はありませんchar。Deservin 'のいくつかの反対票...単純化しています。
Hydroper

36

charは単一のUTF-16文字です。つまり、文字、数字、句読点、タブ、スペース、または類似したものです。

charリテラルは、このように単一引用符で囲まれた単一の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 = '"';

12

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

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

1)最初の行は連結されHAその結果HA(文字列リテラル)になります

2)次に、ASCIIテーブルH= 72およびa= 97 に従って2つの文字の値を追加します。72+97これは、のように追加することを意味し('H'+'a')ます。

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

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

この場合、結果としてになるString Aとcharの連結を扱っています。NAN


4

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

char c = 'c';

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

文字列s = "stackoverflow";

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.