Javaの型判定で使うinstanceofについて現役エンジニアが解説【初心者向け】

初心者向けにJavaの型判定で使うinstanceofについて解説しています。変数の型の基礎とinstanceofを使った判定方法について、基本の書き方と実行結果の見かたをサンプルコードで学びましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Javaの型判定で使うinstanceofについて、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

そもそもJavaについてよく分からないという方は、Javaとは何なのか解説した記事をご覧ください。

 

なお本記事は、TechAcademyのオンラインブートキャンプJava講座の内容をもとに作成しています。

 

田島悠介

今回は、Javaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

型判定で使うinstanceofについて詳しく説明していくね!

大石ゆかり

お願いします!

 

変数の型とは

変数の型とは、値の種類の型を指します。変数を使用する際には、変数の宣言(変数を使用することをコンピュータに伝えること)が必要です。宣言の際には、どんな種類のデータを変数に入れるのかあらかじめ決定していなければなりません。

 

変数の型は以下の8つの「基本データ型(プリミティブ型)」とそれ以外の「参照型(クラス型)」に分けられます。

基本データ型(プリミティブ型)

byte、short、int、long、float、double、char、boolean

クラスをインスタンス化してオブジェクトを扱う際には、必ず「参照型(クラス型)」になる点に注意が必要です。

 

instanceofとは

instanceof演算子は、変数が参照しているクラスが正しいものかどうかを判定する時に使用します。

正しいインスタンスかどうかを判定する演算子のため、int型やboolean型などの基本データ型には使用することはできません。

 

[PR] Javaで挫折しない学習方法を動画で公開中

instanceofの使い方

instanceof演算子は次のように記述します。

1. 変数名 instanceof クラス名
2. 変数名 instanceof インタフェース名

正しいインスタンスかどうかを判定するものであるため、戻り値はtrueまたはfalseになります。

指定した変数がinstanceofの右側で指定したクラス(またはインタフェースを実装したクラス)のインスタンスである場合に、戻り値trueを返します。

 

public class Main {
    public static void main(String[] args) {
        Object obj = "sample";
        System.out.println(obj instanceof String);
        System.out.println(obj instanceof Integer);
    }
}

実行結果は以下になります。

true
false

また、instanceof演算子は、指定するクラスがサブクラスとスーパークラスどちらであってもtrueが返されます。

class SuperClass {}
class SubClass extends SuperClass{}
public class Main {
    public static void main(String[] args) { 
        SubClass sub = new SubClass();
        System.out.println(sub instanceof SubClass);
        System.out.println(sub instanceof SuperClass);
    }
}

この場合の実行結果は下記のようになります。

true
true

このような使い方をすれば、変数subがSuperClassを継承しているかどうかを判定することが可能です。

 

まとめ

インスタンス変数のクラスによって処理を切り替えたい場合には、instanceof演算子が有効であるため活用してみてください。

 

執筆してくれたメンター

松井紀明

メーカー系で17年エンジニアとして勤務後、現在はフリーのエンジニアとしてリモートワークで働いています。

Java、Perl、COBOL、最近ではRuby、PHP等、様々な言語での開発を経験しています。TechAcademyではJavaコースを担当しています。

 

田島悠介

Javaの型判定で使うinstanceofについてわかったかい?

大石ゆかり

はい、内容よくわかりました!

田島悠介

ゆかりちゃん、これからも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でも最短4週間でJavaやServletの技術を使ってWebアプリケーション開発を習得できるオンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているのでぜひ参加してみてください。