【Java】byte型変数にint型変数を代入する(その逆も)
変数への代入あれこれで変数に変数を代入できることを確認しました。
では、ちょっと趣向を変えて、byte型変数にint型変数を代入してみましょう。また、int型変数にbyte型変数を代入してみましょう。
どうなるでしょうか?
1.byte型変数にint型変数を代入
「Lesson012.java」というファイルを作成し、以下のJavaプログラムを入力・保存してください。
public class Lesson012{ public static void main(String args[]){ //byte型変数「x」とint型変数「y」を宣言 byte x = 0; int y = 5; //xにyを代入 x = y; //変数xを出力 System.out.println(x); } }
そして以下のように「javac Lesson012.java」でコンパイルしてください。
C:\Users\ysk\Desktop\java>javac Lesson012.java
Lesson012.java:7: エラー: 精度が低下している可能性
x = y;
^
期待値: byte
検出値: int
エラー1個
Lesson012.java:7: エラー: 精度が低下している可能性
x = y;
^
期待値: byte
検出値: int
エラー1個
すると、上記のエラーがおき、コンパイルができないことがわかります。
【解説】
コンパイル時のエラーを「コンパイルエラー」といいます。
このエラーの原因は、byte型もint型も同じ整数を扱うデータ型ですが、int型は4バイトの箱、byte型は1バイトの箱なので、小さい箱に大きい箱は入れられないからエラーがおきます。
2.int型変数にbyte型変数を代入
「Lesson013.java」というファイルを作成し、以下のJavaプログラムを入力・保存してください。
public class Lesson013{ public static void main(String args[]){ //byte型変数「x」とint型変数「y」を宣言 byte x = 0; int y = 5; //yにxを代入 y = x; //変数yを出力 System.out.println(y); } }
そして以下のように「javac javac Lesson013.java」でコンパイルし、「java Lesson013」で実行してください。
C:\Users\ysk\Desktop\java>javac Lesson013.java
C:\Users\ysk\Desktop\java>java Lesson013
0
C:\Users\ysk\Desktop\java>java Lesson013
0
この場合、エラーが起きずにちゃんと代入ができていることが確認できます。
代入ができる理由ですが、int型は4バイトの箱なので、1バイトの箱であるbyte型は問題なく入るからです(大は小を兼ねる)。
コメント
まだコメントはありません。
コメントフォーム