質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

5189閲覧

Java long l = 5; のような初期化は実務でOKか。

spring_boot

総合スコア12

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/08/17 13:33

java

1long l = 5;

ある問題集で上記のようなコードでの初期化は問題ないとの記述がありました。
さんざん探しましたが、基本的には「5L」という記述が一般的なような気がします。

以下のようにするとキャストが必要であると、コンパイルエラーになるので
longとして扱われることは分かります。

java

1long l = 5; 2int i = 5; 3i = l; //これはエラー(型の不一致)

intで扱えない値になったとき「l」や「L」の表記が必要になるということは分かるのですが
超えてないときは「L」をつけなくてもよいのでしょうか。

つけないことで扱いが変わる、代入のタイミングで負担が増える。など
つけた場合、つけない場合の違いが分かりましたら教えていただけないでしょうか。
また、実務では書く必要があるのか無いのかも知りたいです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/08/17 13:36

実務でダメという根拠や記事があるのなら示された方が良いです。
spring_boot

2018/08/17 13:44

私、javaの開発経験がないのでネットの情報だよりなのですが、Lをつけない初期化の例が少ないのでつけたほうがよいのかと思いました。どちらが正しいのか、もしくはどちらも正しいのか、該当の記事が見つからないので質問しました。
m.ts10806

2018/08/17 14:12 編集

実務コードは外にでることがないから実務なんですけど…。回答になるかどうかわかりませんのでこちらに書きますが、実務観点からすると「案件や現場のコーディングルールによる」としか言えません。結果が同じなのであれば特に。
guest

回答3

0

そもそも
l なんて 数字の 1 と間違えそうな変数名前を宣言することが NG のような気がします...

投稿2018/08/17 14:52

編集2018/08/17 22:31
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

spring_boot

2018/08/17 21:15

これは私の書き方が悪かったです。変数名は適切につけるとして、という前提でした。確かにlという変数名は実務的にNGですね。
guest

0

自身より大きな変数に代入するときはワーニングは出ません

まあ、大抵の言語ではこういう規約になってます
#というより、こうなっていない言語は今まで経験ないです

ということで、実務でもOKにしています

投稿2018/08/17 14:30

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

spring_boot

2018/08/17 21:17

この書き方でもOKでしたか。 javaなので型に関してどこまで厳しく管理してるか確認したかったのですが参考になりました。
guest

0

ベストアンサー

私は実務経験がないため、実務でOKかどうかについては答えかねますが、
long型への代入で数字の末尾にLを省略できる場合については回答させていただきます。

まず、Javaにおいて、末尾にサイズの指定がない整数(リテラル)はすべて__int型__として解釈されます。
そのため、intの範囲を超えるサイズの整数をそのまま宣言すると、コンパイルエラーとなります。
それを回避するため、数字の末尾にlまたはLとつけることで、明示的にlong型の値であることを宣言します。

そして、Javaの基本型(intやlong)には__暗黙の型変換__というものがあります。
これは、簡単に説明すると、値よりも範囲の大きい型(int -> longなど)へと代入を行う時、
__自動的に__キャストが行われます。

つまり、

java

1long l = 5;

といったコードでは、

java

1long l = (long) 5;

というコードと同じ役割を果たします。
そのため、intの範囲の整数をlong型に代入する場合、末尾のLを省略出来るのです。

投稿2018/08/17 14:00

Kakky7s

総合スコア122

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

spring_boot

2018/08/17 21:20

非常によくわかりました! 型変換が行われているんですね。 代入のタイミングでビット数を変化させてlong型にキャストということですか。 実務的にはOKらしいです。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問