こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

文字リテラルの場合は'’でくくる。
文字列リテラルの場合は""でくくることを知りました。

しかし、文字リテラルも""でくくることが出来るのですが、
どちらも""でくくってしまえば簡単な気がします。
これらを区別する理由はあるのでしょうか?


※OKWAVEより補足:「Webシステム開発」についての質問です。

投稿日時 - 2019-04-25 08:47:28

QNo.9610318

暇なときに回答ください

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

'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型の場合の両方について定義されているからです。

投稿日時 - 2019-04-25 18:07:36

お礼

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

投稿日時 - 2019-05-07 12:28:52

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

質問の内容で理解がおかしいと思いました。

>文字リテラルの場合は'’でくくる。
>文字列リテラルの場合は""でくくることを知りました。

そんなこと、どこに書いてありました?

シングルクウォートで括ったものを文字リテラル、ダブルクウォートで括ったものを文字列リテラルだと書いてある気がするんですけど。

だから、シングルクウォートではなくダブルクウォートで括った時点でそれは文字リテラルではなく文字列リテラルということで、文字数が1文字の文字列リテラルと言うだけではないですかね。

投稿日時 - 2019-04-25 09:51:18

補足

回答ありがとうございます。
質問の意図がわかりづらい文章で申しわけありません。

以下の例のように一文字のものをシングルクウォート、ダブルクウォートでくくった場合の
2通りの方法があるのだと解釈しました。


例1:System.out.println("A");
   System.out.println('A');

例2:System.out.println("\n");
   System.out.println('\n');


例1、例2ではそれぞれどちらも同じものが表示されるにも関わらず、分ける意味はあるのでしょうか?
というのが私の疑問です。
処理の速度が変わるなどがあるのでしょうか?
よろしくお願いします。

投稿日時 - 2019-04-25 13:32:57

あなたにオススメの質問