モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)

Java データ型

モーダルを閉じる

ステッカーを選択してください

モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2016/06/18
最終更新最終更新
2019/10/19
記事区分記事区分
一般公開

目次

    アカウント プロフィール画像 (サイドバー)

    Javaちょっとできるプログラマ。教育業界のエンジニアです。

    0
    ステッカーを贈るとは?

    基本型と参照型

    Java のデータ型は基本型と参照型に分類されます。基本型には null は代入できません。基本型には null 以外の初期値があり、boolean は false、intlong は 0 です。

    class Main {
        public static void main(String args[]) {
    
            // 基本型
            boolean b = true;
            byte by = 127; // -128 ~ 127
            char c = 65535; // 0 ~ 65535 (2byte)
            short s = 32767; // -32768 ~ 32767 (2byte)
            int i = 1; // 4byte
            long l = 1L; // 8byte
            float f = 1.0F;
            double d = 1.0;
    
            // 参照型
            String str = "abc";
            Object obj = null;
    
            // ラッパークラス (参照型の一部, java.lang.*)
            Boolean bb = new Boolean(b);
            Byte bby = new Byte(by);
            Character cc = new Character(c);
            Short ss = new Short(s);
            Integer ii = new Integer(i);
            Long ll = new Long(l);
            Float ff = new Float(f);
            Double dd = new Double(d);
        }
    }
    

    参照型の比較は以下のようになります。

    class Main {
        public static void main(String args[]) {
    
            // 参照先が同じであるかどうかの比較
            String str = "abc";
            String str2 = str;
            String str3 = "abc";
            System.out.println(str == str2); //=> true
            System.out.println(str == str3); //=> true になるとは限らない。偶然同じオブジェクトを参照していれば true。
            System.out.println(str == null); //=> false
    
            // 値の比較
            System.out.println("abc".equals(str)); //=> true
            System.out.println("ABC".equals(str)); //=> false
            System.out.println("abc".equals(null)); //=> false
            System.out.println(str.equals("abc")); // str が null だと例外が発生して危険。"abc".equals(str) が安全。
            System.out.println("AAA".equalsIgnoreCase("aaA")); //=> true (文字列のみ)
    
            System.out.println((new Integer(0)).compareTo(-1)); //=> 1 (0 > -1)
            System.out.println((new Integer(0)).compareTo(0)); //=> 0 (0 == 0)
            System.out.println((new Integer(0)).compareTo(1)); //=> -1 (0 < 1)
        }
    }
    

    ラッパークラスと基本型の相互変換

    import java.util.ArrayList;
    
    class Main {
        public static void main(String args[]) {
    
            // 基本型
            boolean b = true;
            byte by = 127;
            char c = 65535;
            int i = 1;
            double d = 1.0;
    
            // 基本型 → ラッパークラス
            Boolean bb = new Boolean(b);
            Byte bby = new Byte(by);
            Character cc = new Character(c);
            Integer ii = new Integer(i);
            Double dd = new Double(d);
    
            ArrayList<Integer> iList = new ArrayList<>(); // 暗黙的な変換 (オートボクシング)
            iList.add(i);
    
            // ラッパークラス → 基本型
            bb.booleanValue();
            bby.byteValue();
            cc.charValue();
            ii.intValue();
            dd.doubleValue();
    
            int i2 = ii; // 暗黙的な変換 (アンボクシング)
        }
    }
    

    アップキャストとダウンキャスト

    C++ のアップキャストとダウンキャストは Java では以下のようになります。

    class Main {
        public static void main(String args[]) {
            String str = "abc";
            Object obj = str; // アップキャスト
            System.out.println(obj instanceof String); //=> true
            String str2 = (String)obj; // ダウンキャスト
        }
    }
    

    Optional (Java 8)

    Scala の Option 型のようなものです。Java 8 で導入されました。

    import java.util.Optional;
    
    class Main {
        public static void main(String args[]) {
    
            // Optional の生成
            Optional<Integer> iOpt = Optional.of(123); // null を渡すと例外が発生
            Optional<Integer> iOpt2 = Optional.empty();
            Optional<Integer> iOpt3 = Optional.ofNullable(null); // 例外が発生しない
            Optional<Integer> iOpt4 = Optional.ofNullable(123);
    
            System.out.println(iOpt); //=> Optional[123]
            System.out.println(iOpt2); //=> Optional.empty
            System.out.println(iOpt3); //=> Optional.empty
            System.out.println(iOpt4); //=> Optional[123]
    
            // 空かどうかの確認
            if(iOpt.isPresent()) {
                System.out.println(iOpt.get());
            }
            iOpt.ifPresent(i -> {
                System.out.println(i);
            });
    
            // Optional からの値の取得
            iOpt.get(); // 空ならば例外 java.util.NoSuchElementException
            iOpt.orElse(999); // 空ならば既定値
            iOpt.orElseGet(() -> { // 空ならば既定値 (ラムダ版)
                return 999;
            });
            try {
                iOpt.orElseThrow(() -> new Exception("例外")); // 空ならば例外
            }
            catch(Exception e) {
                e.printStackTrace();
            }
    
            // 操作
            Optional<Integer> iOpt5 = iOpt.filter(i -> i > 0);
            Optional<Integer> iOpt6 = iOpt.map(i -> i * -1);
    
            // 入れ子になる場合は flatMap が便利
            Optional<Optional<Integer>> iOpt7 = iOpt.map(i -> {
                return Optional.of(i);
            });
            Optional<Integer> iOpt8 = iOpt.flatMap(i -> {
                return Optional.of(i);
            });
        }
    }
    

    基本型のうち int, long, double については対応する Optional が用意されています。

    import java.util.OptionalInt;
    import java.util.OptionalLong;
    import java.util.OptionalDouble;
    
    class Main {
        public static void main(String args[]) {
            OptionalInt iOpt = OptionalInt.of(1);
            OptionalLong lOpt = OptionalLong.of(1L);
            OptionalDouble dOpt = OptionalDouble.of(1.0);
        }
    }
    
    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    Javaちょっとできるプログラマ。教育業界のエンジニアです。

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      関連記事

      • Spring Security フォームログインのサンプルコード
        Spring フレームワークによる Web アプリケーション開発で、ログイン処理を実装する際は Spring Security が便利です。ここでは特に Spring Boot で Web アプリケーションを開発する場合を対象とし、フォームによる ID/Password ログインを行うためのサンプルコードをまとめます。 公式ドキュメント [Spring Security チュートリアル](http...
        えびちゃんえびちゃん12/4/2019に更新
        いいねアイコン画像0
      • Java配列の宣言方法 (C/C++との違い)
        Javaの配列 Javaの配列宣言方法はC/C++と似ているようで若干異なる。 初期化しない場合 C/C++の int array[10]; はJavaでは int array[] = new int[10]; となる。同様にC/C++の int array[3][3]; はJavaでは int array[][] = new int[3][3]; となる。 初期化
        てんとうむしてんとうむし5/13/2018に更新
        いいねアイコン画像0
      • PlantUML による UML 図の描き方
        サムネイル画像-c788fffde5
        PlantUML はテキスト形式で表現されたシーケンス図やクラス図といった UML (Unified Modeling Language) 図の情報から画像を生成するためのツールです。簡単な使い方をまとめます。 インストール方法の選択 Atom や Eclipse のプラグインをインストールしてエディタから利用する方法、JAR をダウンロードして Java コマンドで実行する方法、Redmine ...
        kentakenta1/21/2020に更新
        いいねアイコン画像0
      • Akka HTTP サンプルコード (Scala)
        サムネイル画像-a98142497c
        Akka アクターを用いて実装された汎用 HTTP フレームワークです。Spray の後継です。コアモジュールである akka-http-core は 2016/2/17 に experimental が外れました。akka-http などのいくつかのサブモジュールは 2016/3/1 現在 experimental のままですが、基本的な
        雄太雄太10/7/2021に更新
        いいねアイコン画像0
      • Kestrel の使用例
        Kestrel は Message Queue (MQ) の実装のひとつです。一般に MQ はアプリケーション間やプロセス間、スレッド間で非同期に通信するために用いられます。メッセージの送信側は MQ に書き込めば受信側の応答を待たずに次の処理に非同期に進むことができます。Kestrel はわずか 2500 行程の Scala で実装されており JVM で動作します。MQ 自体はメモリ上に存在する...
        したくんしたくん10/12/2017に更新
        いいねアイコン画像0