- ベストアンサー
文字リテラルと文字列リテラルの違いについて
文字リテラルの場合は'’でくくる。 文字列リテラルの場合は""でくくることを知りました。 しかし、文字リテラルも""でくくることが出来るのですが、 どちらも""でくくってしまえば簡単な気がします。 これらを区別する理由はあるのでしょうか? ※OKWAVEより補足:「Webシステム開発」についての質問です。
- r201501177cr
- お礼率50% (1/2)
- Java
- 回答数2
- ありがとう数1
- みんなの回答 (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型の場合の両方について定義されているからです。
その他の回答 (1)
- okwavey2
- ベストアンサー率15% (251/1593)
質問の内容で理解がおかしいと思いました。 >文字リテラルの場合は'’でくくる。 >文字列リテラルの場合は""でくくることを知りました。 そんなこと、どこに書いてありました? シングルクウォートで括ったものを文字リテラル、ダブルクウォートで括ったものを文字列リテラルだと書いてある気がするんですけど。 だから、シングルクウォートではなくダブルクウォートで括った時点でそれは文字リテラルではなく文字列リテラルということで、文字数が1文字の文字列リテラルと言うだけではないですかね。
補足
回答ありがとうございます。 質問の意図がわかりづらい文章で申しわけありません。 以下の例のように一文字のものをシングルクウォート、ダブルクウォートでくくった場合の 2通りの方法があるのだと解釈しました。 例1:System.out.println("A"); System.out.println('A'); 例2:System.out.println("\n"); System.out.println('\n'); 例1、例2ではそれぞれどちらも同じものが表示されるにも関わらず、分ける意味はあるのでしょうか? というのが私の疑問です。 処理の速度が変わるなどがあるのでしょうか? よろしくお願いします。
関連するQ&A
- リテラル文字列に&を付けたときの挙動について
仕事で触っているプログラムの中で、リテラル文字列に&を付けてアドレス参照している箇所がありました。 char dst[BUFSIZ]; memcpy(dst, &"hoge", 5); gccではdstに正しくhoge\0が格納されているようですが、これはC言語仕様上保証されている動作でしょうか? 気持ち悪いので&を取っちゃいたいのですが、正しい書き方の一つであれば残しておこうと思います。(社内のコード修正には理由を明記する都合上) C99の仕様書(X3010:2003)を読んでみたんですが、該当する記述が見つけられませんでした。 これは仕様上の正しい動作でしょうか、仕様上不定でgcc固有の動作でしょうか? ご存じの方いらっしゃいましたらお助け下さい。
- ベストアンサー
- C・C++・C#
- print("A"); とリテラルとデータ型
リテラルとデータ型について質問します。 インプレス社の問題集で次の解説を見ました。(一部抜粋) 「Javaのリテラルは、デフォルトでは、整数値であればint型、.. 文字であればchara型のデータとして扱われます。」 よく見掛けるコードに次のようなものがあると思います。 System.out.println("A"); この時の文字列A(今回は便宜的に1文字にしています。)は、 変数などで特にデータ型の指定をしていませんが、 JavaのデフォルトとしてString型として扱われる、と考えて良いのでしょうか? Javaのデフォルトのリテラルの扱い、特に「デフォルトの」というところが 明確にわからずにいます。「デフォルトの」というのは、私が上記で例示したような 「データ型指定しない場合」ということでいいのでしょうか…。 解説をお願いします。
- 締切済み
- Java
- 文字列リテラルの途中の文字を指すポインタについて
文字列リテラルの途中の文字を指すポインタについて 下記のプログラムで途中の文字を指すポインタは、&s1[7]で 書かれていますが, s1+7と書けないでしょうか、問題点を教えてください。; int main(void) { char *s1 = "Bohyo takahoshi"; char *s2 = &s1[7]; printf("フルネームは%sです\n",s1); printf(フアミリールームは%sです\n",s2);
- ベストアンサー
- C・C++・C#
- nullを文字列にするには?
nullなどリテラルを文字列にする方法が知りたいです。 何でも.toString()で文字列になるのかと思っていましたが、nullはダメでした。
- ベストアンサー
- JavaScript
- c++11での文字列リテラルの特殊化について
c++11言語でのテンプレート部分特殊化についての質問です。 コメントアウト部分は出力結果です template<class T> struct VT { static const int type = 1;}; template<class T,int N> struct VT< T[N] > { static const int type = 2;}; template<class T,int N> struct VT< const T[N] > { static const int type = 3;}; template<class T> struct VT< T* > { static const int type = 4;}; template<class T> struct VT< const T*const > { static const int type = 5;}; #include<iostream> #include<typeinfo> int main(){ std::cout<<"A:"<< VT< char >::type << std::endl; // A:1 std::cout<<"B:"<< VT< char[10] >::type << std::endl; // B:2 std::cout<<"C:"<< VT< char* >::type << std::endl; // C:4 std::cout<<"D:"<< VT< char const [1] >::type << std::endl; // D:3 std::cout<<"E:"<< VT< decltype("") >::type << std::endl; // E:1 std::cout<<"G:"<< typeid( char const [1] ).name() << std::endl;// G:char const [1] std::cout<<"H:"<< typeid( "" ).name() << std::endl;// H:char const [1] } 型名を直接記述したD,G、文字列リテラルを記述したE,H。 コンパイラ毎の差はあれど、GとHの型名は同じものが表示されます。 ですが、[D:3] [E:1]と値は違い、別の特殊化テンプレートが使われています。 この部分が分かりません。 また、配列リテラル、文字列リテラルに対し部分特殊化テンプレートを宣言する方法などありましたら、ご教示お願いします。
- ベストアンサー
- C・C++・C#
- Varcharについて
Oracleでは文字列の宣言にVarchar2()を使いますよね 何故、OracleだけVarcharではなくVarchar2なのですか? ※OKWAVEより補足:「Webシステム開発」についての質問です。
- 締切済み
- Oracle
- Oracleに日付や時刻のリテラルはないのか
Webで色々検索しているのですが、なかなか「これだ!」という情報に当たらず、お教えいただきたく存じます。 OracleのSQLで、日付や時間を表現するリテラルは存在しないのでしょうか? 必ず to_date(文字列, 'YYYY/MM/DD') と言うように文字列表現と関数の組み合わせでなければならないのでしょうか? to_date(文字列, 表現形式)とto_timestamp(文字列, 表現形式)を見つけたのですが、to_time(文字列, 表現形式)というのが見当たりませんでした。to_time関数は存在しないのでしょうか オラクルのSQLはバージョンによって微妙に違う、というような記述を過去ログに見つけたのですが、8と9について情報をお願いします。
- ベストアンサー
- その他(データベース)
- JSは文字列だったりそうでなかった利することがよく
EventListenerの名前は文字列でなく、イベントは文字列などJSは文字列だったりそうでなかった利することがよくありますが、どう区別すればよいのでしょうか? btn.removeEventListener('click', listener, false); }, false); なぜイベントだけ文字列になっているのでしょうか? 規則性がないような気がします。
- ベストアンサー
- JavaScript
- Access 定型入力のリテラル文字について
フィールドプロパティの定型入力でリテラル文字をデータとして持つ場合(「0」指定する。) すでに入力されているデータは影響されず、フォーム等で新たに入力されたデータはリテラル文字と入力した文字がデータとして保存されます。 しかしExcelなどからインポートしたデータは定型入力(「0」)が指定してあってもリテラル文字がデータに入りません。 同様に郵便番号をインポートしても、住所が自動的に表示されません。 (住所入力支援設定をしていても) 前項に関してはExcelで希望の形式に変更し、 定型入力設定を無効にしてからインポートする方法がありますが、Access側で何か方法は無いでしょうか? 郵便番号に関してはやり方がわかりません。 一つの郵便番号で複数の住所が引っかかる場合が多いのでこれは無理かもしれませんが、せめて都道府県だけでも出したいです。
- ベストアンサー
- オフィス系ソフト
お礼
回答を頂きましてありがとうございました。 まだまだ勉強中のため、とても参考になりました。 勉強を始めて数週間なので、回答を頂戴したこと本当にありがたく思いました。 今後質問することも多くあると思いますのでその際にもお答え頂ければ幸いです。