Javaエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnetJava
  2. Javaコラム
  3. Java入門
  4. Javaのint型を基本から解説します|Integerクラスの便利な機能を知ろう

Javaのint型を基本から解説します|Integerクラスの便利な機能を知ろう

  • Java入門
公開日時:   更新日時:
Javaのint型を基本から解説します|Integerクラスの便利な機能を知ろう
この記事でわかること
    システム
    エンジニア
    Javaのintとはどのようなものなのでしょうか。
    プロジェクト
    マネージャー
    Javaのint型はプリミティブ型(基本型)で最も多く使用される整数の数値型です。

    Javaのintとは?

    Javaのint型はプリミティブ型(基本型)で最も多く使用される整数の数値型です。Javaで数値を扱う時はとりあえずint型にするのが普通で、Javaのソースコードでint型を見かけないことはまずありません。

    int型のサイズは32bitで、2,147,483,647から-2,147,483,648までの範囲の値を扱えます。21億ほどあるので桁あふれはまずありませんが、非常に大きな値を扱う場合は約922京まで扱える64bitのlong型を使用する必要があります。

    int型の基本的な使い方

    Javaのint型は以下のように、int型で変数を宣言して代入したり、配列を宣言して代入するといった使い方をします。

    int val = 100;
    int[] ary = new int[10];
    ary[0] = 10;
    ary[1] = 11;

    int型に代入する値は普通に記述すると10進数ですが、以下の様に2進数・8進数・16進数、桁区切りの記述もできます。

    int i2 = 0b1001; // 2進数(先頭に0b)
    int i8 = 04567; // 8進数(先頭に0)
    int i16 = 0xabcdef; // 16進数(先頭に0x)
    int ik = 111_222_333; // 桁区切り(_で区切る)

    クラスフィールドは0で初期化される

    Javaの変数はint型に限らず初期化する必要があります。以下のようにローカル変数を初期化せずに使おうとするとコンパイルエラーになります。

    int i; // 初期化していない
    System.out.println(i);

    ただしクラスフィールドの場合は、初期化をしていないと自動的に0で初期化されます。

    class TestClass {
    int val;
    int[] ary = new int[10];
    public class Main {
    public static void main(String[] args)

    {TestClass c = new TestClass();
    System.out.println(c.val + “” “” + c.ary[0]); } }

    実行結果は以下のようになります。newで生成した時に0で初期化されていることがわかります。

    0 0

    intでは小数点以下は切り捨てられる

    int型の変数に別の型の値を入れる時は(int)でキャストします。この時、float型やdouble型などの少数を入れた場合、int型は整数しか扱えないため、小数点以下は切り捨てられます。以下のJavaサンプルをご覧ください。

    float f = 3.14f;
    double d = 3.14;

    int a = (int)f;
    int b = (int)d;

    System.out.println(a + “” “” + b);

    実行結果は以下になります。.14は切り捨てられてしまっています。

    3 3

    int型の桁あふれに注意する

    int型はかなり大きい値を扱えますが、それでも桁あふれの可能性は常にあります。以下のJavaサンプルのように、int型で扱える正の最大値より1つ大きな値を代入したらどうなるのでしょうか。

    long l = 2147483647L + 1L;
    int i = (int)l;

    System.out.println(i);

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

    -2147483648

    int型の最小値になってしまっています。最大値を超過してしまうと、最小値になってしまうのです。逆に最小値よりさらに小さくなった場合は、最大値になります。int型を使う場合は、int型の範囲で問題がないか注意しましょう。

    String文字列からint型への変換

    Stringの文字列をint型の数値に変換したい時は、Integerクラスを使用します。以下のようにすれば変換できます。

    int val = Integer.parseInt(“”123″”);
    System.out.println(val);

    なお文字列に数字ではない文字が含まれると、NumberFormatExceptionが発生します。以下のような16進数表記でも同様に発生します。文字列の数字変換はtry~catchで囲んでおきましょう。

    try {
    int val = Integer.parseInt(“”0x123″”);
    System.out.println(val);
    }
    catch (Exception e) {
    e.printStackTrace();
    }

    int型からString文字列への変換

    int型の数値からStringへの変換は、Integer.toStringかString.valueOfで変換できます。以下のJavaサンプルをご覧ください。

    String str1 = Integer.toString(123);
    String str2 = String.valueOf(456);
    System.out.println(str1 + “” “” + str2);

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

    123 456

    int型の数値をカンマ区切り表示

    DecimalFormatクラスやString.formatでint型の数値をフォーマットすることができます。以下のJavaサンプルをご覧ください。なお実行する場合はソースの先頭に「import java.text.DecimalFormat;」が必要です。

    int val = 111222333;
    DecimalFormat dform = new DecimalFormat(“”#,###””);
    System.out.println(dform.format(val));
    System.out.println(String.format(“”%,d””, val));

    実行結果は以下のようになります。3桁毎のカンマ区切りができています。

    111,222,333
    111,222,333

    int型の数値を右詰めで表示

    また、以下のようにすれば右詰めや0埋めもできます。11という数字は全体が11桁と言う意味です。

    System.out.println(String.format(“”%11d””, val));
    System.out.println(String.format(“”%011d””, val));

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

    111222333
    00111222333

    int型の値を中に持てるIntegerクラス

    Javaにはint型の数値を中に保持してラップすることができるIntegerクラスがあります。使用例は以下の通りです。

    Integer iObj = Integer.valueOf(123);
    int val = iObj.intValue();
    System.out.println(val);

    実行すると以下のようになります。123という値を持つiObjを生成し、そこからintValueメソッドでint型の値を取り出しています。

    123

    オートボクシングでIntegerをスマートに生成できる

    Javaにはオートボクシングという、=で代入するだけで基本型をラップするクラスを生成する機能があります。上のサンプルのInteger.valueOfをコールしている箇所を、以下のように変えても同様に動作します。

    Integer iObj = 123;

    Integerの様なクラスは何のためにあるのでしょうか。その理由の一つは、intのような基本型にnullの状態を持たせるためです。「無い」と言う状態をint型で示すことはできません。0や-1という数字にも意味があるからです。

    しかしIntegerのnullなら、存在しないという状態を作り出せます。

    Integerクラスの便利な機能

    またIntegerクラスには様々な便利な機能があります。よく使うのは以下のMAX_VALUEとMIN_VALUEでしょう。

    System.out.println(Integer.MAX_VALUE+”” “”+Integer.MIN_VALUE);

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

    2147483647 -2147483648

    int型の最大値と最小値をそのまま使うよりも、こちらの方が意図が明確になります。他には以下のように与えられた数値を16進数の文字列にする機能もあります。

    System.out.println(Integer.toHexString(65535));

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

    ffff

    システム
    エンジニア
    Javaのintについてよく理解できました。
    プロジェクト
    マネージャー
    intは初心者の人でも知っていることが多い数値型ですが、再確認のために復習するのも大切なことですね。

    intはJavaの基本中の基本なのでしっかりマスターしよう

    Javaのintについて解説しましたが、ご理解頂けましたでしょうか。

    初心者の人でも知っていることが多かったと思いますが、知らないこともあったはずです。int型はJavaの基本なので隅々まで把握しておきましょう。

    FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    Java新着案件New Job