• ベストアンサー

文字リテラルと文字列リテラルの違いについて

文字リテラルの場合は'’でくくる。 文字列リテラルの場合は""でくくることを知りました。 しかし、文字リテラルも""でくくることが出来るのですが、 どちらも""でくくってしまえば簡単な気がします。 これらを区別する理由はあるのでしょうか? ※OKWAVEより補足:「Webシステム開発」についての質問です。

質問者が選んだベストアンサー

  • ベストアンサー
  • _kappe_
  • ベストアンサー率68% (1581/2304)
回答No.2

'a'と"a"では型が違います。 そのため、String s="a";と書くことはできてもString s='a';と書くとエラーになります。逆も同様で、char c="a";は正しいコードではありません。 char型と長さ1文字のString型の間の自動変換はJavaの言語仕様にないからです。 型が違えばできることが違います。 たとえばint n="a".length();は可能ですが、int n='a'.length();はエラーになります。 System.out.println()が"a"でも'a'でも対応可能なのは、引数がString型の場合とchar型の場合の両方について定義されているからです。

r201501177cr
質問者

お礼

回答を頂きましてありがとうございました。 まだまだ勉強中のため、とても参考になりました。 勉強を始めて数週間なので、回答を頂戴したこと本当にありがたく思いました。 今後質問することも多くあると思いますのでその際にもお答え頂ければ幸いです。

その他の回答 (1)

  • okwavey2
  • ベストアンサー率15% (251/1593)
回答No.1

質問の内容で理解がおかしいと思いました。 >文字リテラルの場合は'’でくくる。 >文字列リテラルの場合は""でくくることを知りました。 そんなこと、どこに書いてありました? シングルクウォートで括ったものを文字リテラル、ダブルクウォートで括ったものを文字列リテラルだと書いてある気がするんですけど。 だから、シングルクウォートではなくダブルクウォートで括った時点でそれは文字リテラルではなく文字列リテラルということで、文字数が1文字の文字列リテラルと言うだけではないですかね。

r201501177cr
質問者

補足

回答ありがとうございます。 質問の意図がわかりづらい文章で申しわけありません。 以下の例のように一文字のものをシングルクウォート、ダブルクウォートでくくった場合の 2通りの方法があるのだと解釈しました。 例1:System.out.println("A");    System.out.println('A'); 例2:System.out.println("\n");    System.out.println('\n'); 例1、例2ではそれぞれどちらも同じものが表示されるにも関わらず、分ける意味はあるのでしょうか? というのが私の疑問です。 処理の速度が変わるなどがあるのでしょうか? よろしくお願いします。

関連するQ&A