- PR -

Javaは大文字と小文字を区別するのに、なぜ「5.5f」は「5.5F」もアリ?

1
投稿者投稿内容
ヤング
会議室デビュー日: 2002/12/17
投稿数: 4
投稿日時: 2005-06-13 16:32
お世話になります。

浮動小数点リテラルに限ったことではないのですが、
コード:
long l1 = 11l;
long l2 = 22L;
double d1 = 3.3d;
double d2 = 4.4D;
float f1 = 5.5f;
float f2 = 6.6F;


と、大文字小文字どっちでもOK!になってるんでしょうか。

ちなみに、言語仕様書を見ると、
「小文字lより、大文字Lの方が好ましい。なぜなら1と紛らわしいから」
と、long型には記載がありますが、
http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#48282
doubleとfloatには、どっちがいいですよ的な記載はないし。。。
http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#230798

Javaは大文字・小文字を区別するはずなのに!
と、変な初歩的な質問ですみません。
なぜでしょうか、というより、どっちの方が好ましいのでしょうか。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2005-06-13 16:45
引用:

Javaは大文字・小文字を区別するはずなのに!
と、変な初歩的な質問ですみません。
なぜでしょうか、というより、どっちの方が好ましいのでしょうか。



どちらでもかまいませんよ。
わかりやすく可視的にアピールしているだけとかんがえたほうがいいです。

コーディングスタイルによるものではないでしょうか。

大文字小文字を区別するのは、
クラス名、パッケージ名、変数名 等ではないでしょうか。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2005-06-13 16:45
引用:

ヤングさんの書き込み (2005-06-13 16:32) より:

浮動小数点リテラルに限ったことではないのですが、


浮動小数点リテラル以外の例を教えてください。

<追記>
我ながら脇が甘い・・・(汗
でも、数値リテラル指定時以外に、大文字小文字が区別されない例って、他にありましたっけ?
こちらの方は、ぜひ知りたいです。

[ メッセージ編集済み 編集者: Edosson 編集日時 2005-06-13 16:59 ]
ヤング
会議室デビュー日: 2002/12/17
投稿数: 4
投稿日時: 2005-06-13 16:59
raystarさん、回答ありがとうございます!
つい、「Javaは大文字小文字を厳密に区別する」はずなのに、
なぜにココだけ?と思ってしまったものですから。

「どっちの方が好ましいのか」の回答としては、raystarさんの通りとして、
さてそこで、ついでに調子こいて、では『なぜ?!』というのはいかがでしょう。
なぜにナニユエに、fとFとが用意されているのか?!

引用:

Edossonさんの書き込み (2005-06-13 16:45) より:

浮動小数点リテラル以外の例を教えてください。



long型の整数リテラルの場合の、
コード:

long l1 = 11l;
long l2 = 22L;


がその例です。

あとは、eとE、16進数の際のxとXですかね。ってこれも数値リテラルがらみですね。

[ メッセージ編集済み 編集者: ヤング 編集日時 2005-06-13 17:05 ]
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2005-06-13 17:26
追記したのですが、入れ違いになっちゃったみたいですね。すみません。
改めて、数値リテラル以外の例があるのでしたら、ご教示ください。
引用:

「Javaは大文字小文字を厳密に区別する」はずなのに、


露骨にいってしまうと、「素朴な疑問」というのは得てして「先入観」に過ぎない場合も多いです。
「区別するはず」というは、それにあたりませんか?

私の場合は、「これは仕様、理由は創造者の胸の内」ということで納得してます。
びしばし
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 181
投稿日時: 2005-06-13 17:35
ずばり、「大文字小文字どちらかに決定、およびそれを強制すると反対派が怒るから」ではないでしょうか。

Sun内部(Goslingらのグループ)でも両方の派がいたりして、何日にも及ぶ白熱した議論でも結論が出せず、議長の Gosling が「OK、じゃあどっちでもいいことにしよう」...という感じでどうでしょう

long値の l は大文字固定にしてもらったほうが良かったかもしれませんね。
私は L の他は小文字で書いてます。
JW
常連さん
会議室デビュー日: 2004/01/14
投稿数: 49
投稿日時: 2005-06-13 17:44
引用:

ヤングさんの書き込み (2005-06-13 16:59) より:

つい、「Javaは大文字小文字を厳密に区別する」はずなのに、
なぜにココだけ?と思ってしまったものですから。


普通は「厳密に区別する」からこそ、区別しない例であるこれらを、仕様に区別しないと書いてあるだけのような気がしますが…。

浮動小数点リテラル(の抜粋)
http://www.y-adagio.com/public/standards/tr_javalang2/lexical.doc.html#230798
コード:
FloatTypeSuffix: one of
        f F d D   ←ここ




論理値リテラル
http://www.y-adagio.com/public/standards/tr_javalang2/lexical.doc.html#49652
コード:
BooleanLiteral: one of
        true false


なんかは、小文字だけですね。

…で、なんでそんな仕様なのか、ってのはEdossonさんの言われるように、創造者の胸の内、と言うことだとは思います。(他言語に合わせただけとかね)
ヤング
会議室デビュー日: 2002/12/17
投稿数: 4
投稿日時: 2005-06-13 17:49
大ベテランのみなさん、ありがとうございます。

引用:

びしばしさんの書き込み (2005-06-13 17:35) より:

Sun内部(Goslingらのグループ)でも両方の派がいたりして、何日にも及ぶ白熱した議論でも結論が出せず、議長の Gosling が「OK、じゃあどっちでもいいことにしよう」...という感じでどうでしょう



人間くさくていいですね。そんな雰囲気大好きです。
C言語とかで大文字小文字の区別がなかったのが、事の発端といったところでしょうか。

そして10年がたち、今となっては、
引用:

Edossonさんの書き込み (2005-06-13 17:26) より:

私の場合は、「これは仕様、理由は創造者の胸の内」ということで納得してます。


ということで、JWさんともども、私も飲み込んじゃおうと思います!ゴックン!

みなさん、ありがとございました。

[ メッセージ編集済み 編集者: ヤング 編集日時 2005-06-13 17:50 ]
1

スキルアップ/キャリアアップ(JOB@IT)