Tips

Java Silver 練習問題27

Java Silver 練習問題27

Java Silverに関する問題を出題していきます!

 

問題1
次のプログラムをコンパイル、実行した結果として正しいものはどれか。

[java] public class Practice27_Q1 {
public static void main(String[] args) {
System.out.println(3 / 10);
}
}
[/java]
  1. 「0.3」と表示
  2. 「0」と表示
  3. 「0.0」と表示
  4. コンパイルエラー
  5. 実行時エラー
解答はここをクリック!

【解答 2:「0」と表示】

3 /10 なので一見0.3になりそうですが、int同士の演算結果はint型になります。
したがって小数部は切り捨てられてしまうため、「0」と表示されます。

 

 

問題2

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

[java] public class Practice27_Q2 {
public static void main(String[] args) {
double result = 3 / 10;
System.out.println(result);
}
}
[/java]
  1. 「0.3」と表示
  2. 「0」と表示
  3. 「0.0」と表示
  4. コンパイルエラー
  5. 実行時エラー
解答はここをクリック!

【解答 3:「0.0」と表示】

よくある間違いですね。
3 / 10 の演算結果をint型の変数に代入するのですが、問題1でやった通り結果は「0」です。
この「0」をdouble型に変換しているため「0.0」となります。

 

 

問題3

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

[java] public class Practice27_Q3 {
public static void main(String[] args) {
double result = 3.0 / 10;
System.out.println(result);
}
}
[/java]
  1. 「0.3」と表示
  2. 「0」と表示
  3. 「0.0」と表示
  4. コンパイルエラー
  5. 実行時エラー
解答はここをクリック!

【解答 1:「0.3」と表示】

式が3.0 / 10 となっていて、double型とint型の演算になっています。
この場合の結果はdouble型?それともint?という疑問が湧くのですが、結論はdouble型です。
doubleをintにすることは基本的にできませんが、その逆は可能です。
したがって結果はdouble型になります。

 

 

問題4

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

[java] public class Practice27_Q4 {
public static void main(String[] args) {
double d = 3.14;
int i = (int)d;
System.out.println(i);
}
}
[/java]
  1. 「3」と表示
  2. 「3.14」と表示
  3. 「3.0」と表示
  4. コンパイルエラー
  5. 実行時エラー
解答はここをクリック!

【解答 1:「3」と表示】

4行目でdouble型の変数dの前に(int)とついていますが、これがキャスト(明示的型変換)です。
キャストするとデータの損失が置きます。
整数を小数に変換するには「.0」とつけるだけでデータの損失はありません。
しかし、その逆だと小数部の扱いに困っていまします。
この場合、キャストによって小数部を切り捨てることによって無理やり整数に変換することが可能となります。

 

 

問題5

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

[java] public class Practice27_Q5 {
public static void main(String[] args) {
boolean bo = true;
int i = (int)bo;
System.out.println(i);
}
}
[/java]
  1. 「0」と表示
  2. 「1」と表示
  3. コンパイルエラー
  4. 実行時エラー
  5. 1~4以外
解答はここをクリック!

【解答 3:コンパイルエラー】

なんでもかんでもキャストできるわけではありません。
キャストができるのは、暗黙的型変換ができる場合の逆です。
例えばint型はdouble型に変換できます。
この場合、double型はint型にキャストすることができます。

 


前回の問題             次の問題

新連載はじまりました!新Java基礎 連載リンク

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search