基本データ型のキャスト:問題2
問題:以下のプログラムのコンパイル/実行結果として適切なものを1つ選択しなさい。
A. 変数xへの代入文でコンパイルエラー(型の不一致)
B. 変数yへの代入文でコンパイルエラー(型の不一致)
C. 5 が表示される
D. 5.0 が表示される
public class M {
public static void main(String[] args) {
int x = 5.0;
double y = x;
System.out.println(y);
}
}
正解:
A. 変数xへの代入文でコンパイルエラー(型の不一致)
解説:
変数xへの代入文・・・int型変数 = double型リテラル → 小さな型への代入です。
変数yへの代入文・・・double型変数 = int型変数 → 大きな型への代入です。
より小さな型への代入は、明示的にキャストしないとコンパイルエラーになります。
A. 変数xへの代入文でコンパイルエラー(型の不一致)
B. 変数yへの代入文でコンパイルエラー(型の不一致)
C. 5 が表示される
D. 5.0 が表示される
public class M {
public static void main(String[] args) {
int x = 5.0;
double y = x;
System.out.println(y);
}
}
正解:
A. 変数xへの代入文でコンパイルエラー(型の不一致)
解説:
変数xへの代入文・・・int型変数 = double型リテラル → 小さな型への代入です。
変数yへの代入文・・・double型変数 = int型変数 → 大きな型への代入です。
より小さな型への代入は、明示的にキャストしないとコンパイルエラーになります。
認定策問題集など
Javaアソシエイツ試験やJavaプログラマ試験などに限った話ではないですが、
認定試験の対策本をやっていると、
「内容の完全な理解は出来ていないけど、答えはこれ」
的に即答できてしまうようになりませんか?
そのような場合、実際の認定試験でも似たような問題が出題されると、
「意味はよくわかんないけど、多分答えはこれ」
っていう状況になります。
どの資格試験も結構な値段しますから、
「合格すること」はむちゃくちゃ大切なんですが、
合格のためだけに勉強していると実力にならない気がしますね。
そこで、このブログでは
「どの選択肢も正解になるような問題」
をセットにして公開していきたいと思っています。
問題自体のレベルとしては認定試験よりもかんたんなものが多いとは思いますが、
ソースコードをきちんと見て、正しく解釈できるようになると考えています。
認定試験の対策本をやっていると、
「内容の完全な理解は出来ていないけど、答えはこれ」
的に即答できてしまうようになりませんか?
そのような場合、実際の認定試験でも似たような問題が出題されると、
「意味はよくわかんないけど、多分答えはこれ」
っていう状況になります。
どの資格試験も結構な値段しますから、
「合格すること」はむちゃくちゃ大切なんですが、
合格のためだけに勉強していると実力にならない気がしますね。
そこで、このブログでは
「どの選択肢も正解になるような問題」
をセットにして公開していきたいと思っています。
問題自体のレベルとしては認定試験よりもかんたんなものが多いとは思いますが、
ソースコードをきちんと見て、正しく解釈できるようになると考えています。
基本データ型のキャスト:問題1
問題:以下のプログラムのコンパイル/実行結果として適切なものを1つ選択しなさい。
A. 変数xへの代入文でコンパイルエラー(型の不一致)
B. 変数yへの代入文でコンパイルエラー(型の不一致)
C. 5 が表示される
D. 5.0 が表示される
public class M {
public static void main(String[] args) {
int x = 5;
double y = x;
System.out.println(y);
}
}
正解:
D. 5.0 が表示される
解説:
変数xへの代入文・・・int型変数 = int型リテラル → データ型は一致しています。
変数yへの代入文・・・double型変数 = int型変数 → 大きな型への代入です。
より大きな型への代入では、自動的に型変換が行われるため、
キャスト演算を行わなくてもyの値は5.0になります。
A. 変数xへの代入文でコンパイルエラー(型の不一致)
B. 変数yへの代入文でコンパイルエラー(型の不一致)
C. 5 が表示される
D. 5.0 が表示される
public class M {
public static void main(String[] args) {
int x = 5;
double y = x;
System.out.println(y);
}
}
正解:
D. 5.0 が表示される
解説:
変数xへの代入文・・・int型変数 = int型リテラル → データ型は一致しています。
変数yへの代入文・・・double型変数 = int型変数 → 大きな型への代入です。
より大きな型への代入では、自動的に型変換が行われるため、
キャスト演算を行わなくてもyの値は5.0になります。