Javaのキャスト【初心者向けにサンプルプログラム付き】

javaのcast
  • このエントリーをはてなブックマークに追加
  • Pocket

Javaでいうところのキャストとはデータ型を変換することだ。特に明示的に変換するときキャストと呼ぶことが多い。

このページではJavaでのキャスト方法についてサンプルプログラム付きでまとめている。

Javaのキャスト方法

ある型から別な型に変換することをJavaでは「型変換」と言う。

型変換には、暗黙的に変換させる方法と、明示的に変換させる方法の2種類があり、後者をキャストと言う。

基本的な使い方

明示的に型変換を行う場合、キャスト演算子を使う。

キャスト演算子は、変換元変数の前に「(変換したい型)」を書くだけだ。

代入する変数 = (キャスト演算子)変換元の変数

これだけだ。非常に簡単だろう。

データ型による違い

キャストには、基本型とクラス型の2種類がある。

基本型

①    long var1 = 1;

②    short var2 = (short)1;

説明

基本型で表現できる範囲は、byte、short、int、long、float、doubleの順に広くなる。

 

①    byte の変数や数値を、intの変数に代入する場合など、範囲を拡大するケースでは、暗黙の型変換が行われるため、キャストは不要である。

 

②    逆に、int の変数や値を、byte の変数に代入する場合など、範囲を縮小するケースでは、キャストが必要となる。

クラス型

①    Object obj1 = new Integer(1);

②    Integer obj2 = (Integer)obj1;

説明

クラス型で表現できる範囲は、サブクラス、スーパークラスの順、または、インタフェース実装クラス、インタフェースの順に限定的になる。

 

①    サブクラスの変数をスーパークラスの変数に代入するなど、範囲が限定的になる場合は、暗黙の型変換が行われるため、キャスト不要である。

 

②    逆に、スーパークラスの変数をサブクラスの変数に代入するなど、範囲が拡大する場合は、キャストが必要となる。

Javaでキャストするサンプルプログラム

それでは実際にサンプルプログラムを確認してみよう。

サンプルコード

class Animal { String kind; }
interface PetInterface {
  public void setNickName(String owner);
  public String getNickName ();
}
class Pet extends Animal implements PetInterface {
  public String nickName;
  public void setNickName (String nickName){ this. nickName = nickName; }
  public String getNickName (){ return this. nickName; }
}
class CastSample {
  public static void main(String[] args) {
    double var1 = 100; // [A-1]
    float var2 = (float)var1; // [A-2]
    float var3 = 1.0f / 2.0f; // [A-3]
    int var4 = (int)var3; // [A-4]
    System.out.println("[A-5]var1 : " + var1);
    System.out.println("[A-6]var2 : " + var2);
    System.out.println("[A-7]var3 : " + var3);
    System.out.println("[A-8]var4 : " + var4);
    Pet myDog = new Pet(); // [B-1]
    myDog.kind = "dog";
    myDog.setNickName ("Jimmy");
    PetInterface myPet = myDog; // [B-2]
    Animal myAnimal = myDog; // [B-3]
    Pet myDog1 = (Pet)myPet; // [B-4]
    Pet myDog2 = (Pet)myAnimal; //[B-5]
    System.out.println("[B-6]myAnimal.kind : " + myAnimal.kind);
    System.out.println("[B-7]myDog1.getNickName(): " + myDog1.getNickName());
    System.out.println("[B-8]myDog2.kind : " + myDog2.kind);
  }
}

実行結果

[A-5]var1 : 100.0
[A-6]var2 : 100.0
[A-7]var3 : 0.5
[A-8]var4 : 0
[B-6]myAnimal.kind : dog
[B-7]myDog1.getNickName(): Jimmy
[B-8]myDog2.kind : dog

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [A-1] double var1に、暗黙の型変換により、long型の値「100」を設定する。
  • [A-2] float var2に、var3 をfloat型に変換した値を設定する。
  • [A-3] float var3に、(float)1 ÷ (float)2の演算結果を設定する。
  • [A-4] int var4に、var3をint型に変換した値を設定する。
  • [A-5] var1の値を表示する。
  • [A-6] var2の値を表示する。
  • [A-7] var3の値を表示する。
  • [A-8] var4の値を表示する。
  • [B-1] Dog myDogに、Dogクラスのインスタンスを設定する。
  • [B-2] PetInterface myPetに、暗黙の型変換により、myDogをPetInterfaceに変換して設定する。
  • [B-3] Animal myAnimalに、暗黙の型変換により、myDogをAnimalに変換して設定する。
  • [B-4] Pet myDog1に、myPetをDog型に変換した値を設定する。
  • [B-5] Pet myDog2に、myAnimalをDog型に変換した値を設定する。
  • [B-6] Animal myAnimalのkindを表示する。
  • [B-7] Pet myDog1のnicknameを取得し表示する。
  • [B-8] Pet myDog2のkindを表示する。

まとめ

このページでは、Javaのキャストについてまとめてみた。

クラスのキャストについては、もともとは別々な型を、キャストを利用することで、あたかも同じ型に見せかけて、プログラミングを柔軟に拡張するといったこともできる。

Javaを実践的に使用することになると、かなりの頻度で登場することになるので、ぜひ覚えよう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する