本連載は、サン・マイクロシステムズ認定のJava資格Sun Certified Programmer for Java 2 Platform 5.0(SJC-P5.0)に対応しています。最新の出題傾向に基づいて、ソースコードの問題を中心に毎回模擬問題を1問出題します。ソースコードに慣れながら、SJC-P合格を目指して頑張りましょう。
連載第7回の今回は、基本データ型の型変換に関する出題です。
基本データ型で宣言した変数には、宣言時の型(intやdoubleなど)で扱えるデータの範囲内であれば、値を代入することができます。
また、もし異なる型であっても以下のルールに従えば暗黙変換が行われ、変数に値を代入することができます。
→ → 暗黙に型変換が行われる  → →                                                                                                                                                                                                | 
               ||||||||||||||||
  | 
                 →  | 
                 
  | 
                 →  | 
                 
  | 
                 →  | 
                 
  | 
                 →  | 
                 
  | 
                 →  | 
                 
  | 
               ||||||
  | 
                 →  | 
               |||||||||||||||
← ← キャストを使用する ← ←                                                                                                                                                                                                | 
               ||||||||||||||||
| 図1 型変換の流れ | ||||||||||||||||
●例
int i = 100;
double d = i; // iには100.0が代入される
先ほどの例にあるように、intの値をdouble型の変数に代入する場合には、暗黙で変換されますが、その逆を行おうとするとコンパイルエラーになります。もし強制的に変換する場合はキャスト演算子を使用します。キャスト演算子は、(変換したい型)対象の値と記述します。ただし、数値によっては一部の情報が失われるので使用時には注意してください。
【構文】
(変換したい型)対象の値
●例
double d = 10.5;
int i = (int)d; // iには10が代入される。
class Sample1 {
  public static void main(String[] args) {
    int a = 100;
    double b = 3.14;
    double x = a;
    // int y = b;  // コンパイルエラー
    int y =(int)b;
    System.out.println(x);
    System.out.println(y);
  }
} | 
               
| サンプルコード1 | 
C:\sample>java Sample1 100.0 3 C:\sample>  | 
  
| サンプルコード1の実行結果 | 
以下の問題を考えてみてください。解答と解説は次のページにあります。
問題
次のプログラムをコンパイルし、実行するとどうなりますか? 1つ選択してください。
 1. public class Test{
 2.   public static void main(String[] args) {
 3.     char num1 = 'a';  int num2 = 10;
 4.     print(num1);
 5.     print(num2);
 6.   }
 7.   public static void print(int c) {
 8.     System.out.println("int    : " + c);
 9.   }
10.   public static void print(double d) {
11.     System.out.println("double : " + d);
12.   }
13. } | 
        
A.
int    : 97
   int    : 10
B.
int    : 97
   double : 10.0
C.
double : 97.0
   double : 10.0
D. コンパイルエラー
E. 実行時エラー
Copyright © ITmedia, Inc. All Rights Reserved.