スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


--------------------------------------------------------------------------------------

Javaパズル5 Integer型のお話

今回はIntegerクラスに関してお勉強です。

Quiz、以下のソースを実行するとどのように表示されますか?

public class Test {
    public static void main(String[] args) {
     
        Integer num1 = 100;
        Integer num2 = 100;
        Integer sum = num1 + num2;
        Integer i = 200;

        System.out.println(num1 == num2);
        System.out.println(num1.equals(num2));

        System.out.println(sum == i);
        System.out.println(sum.equals(i));

    }
}





















実行すると以下のようになります。

2010_05_19_javaPuzzle.jpg


autoboxing・・・Integer num1 = 100;のように基本データ型をラッパークラスに自動変換する機能のことを言います。
このautoboxingでオブジェクトを自動生成する場合なのですが、メモリの効率化を図るために以下の条件の場合は同じオブジェクトを参照します。
●trueまたはfalseのboolean値
●-128~127の範囲の整数
●'\u0000'~'\u007F'の範囲の文字(整数に変換すると0~127です)
ですので、num1とnum2の比較ではオブジェクトが一致し、==での比較でもtrueとなります。
しかし、sumとiの比較では127を超えているので==での比較はfalseとなります。


Integerをはじめとして、たいていのオブジェクトは、比較するときequals()メソッドで意味のある比較をするようにした方がいいようです。

---------------------------------------------------------------------------------

徹底攻略Java2プログラマ問題集―Platform1.4対応 (ITプロ/ITエンジニアのための徹底攻略)
八木 裕乃 明壁 敦子 須沢 秀人
インプレス
売り上げランキング: 317304
関連記事


--------------------------------------------------------------------------------------

コメントの投稿

非公開コメント

このブログについて
  • 全記事一覧(時間順)
  • このブログについて
  • 私のプロフィール
  • 当ブログで扱っている動画について
  • 記事違いなコメントのお返事

  • カテゴリー
    twitter
    カレンダー
    07 | 2017/08 | 09
    - - 1 2 3 4 5
    6 7 8 9 10 11 12
    13 14 15 16 17 18 19
    20 21 22 23 24 25 26
    27 28 29 30 31 - -
    Amazon
    でたらめな当ブログにぴったりな商品を自動で表示するみたいです。



    月別アーカイブ
    プロフィール

    たづみ

    Author:たづみ
    ・1981年生まれの男
    ・もう少し詳細なプロフィールはこちらで

    最新コメント
    アクセスランキング
    [ジャンルランキング]
    日記
    1650位
    アクセスランキングを見る>>

    [サブジャンルランキング]
    会社員・OL
    325位
    アクセスランキングを見る>>


    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。