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
-
官公庁向け業務システム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給39万~44万円東京都千代田区(永田町駅) -
販売管理システム開発/Java/東京都中央区/【WEB面談可】/テレワーク
月給49万~55万円東京都中央区(京橋駅) -
生命保険会社向けシステム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給42万~48万円東京都千代田区(大手町駅) -
社会保険システムのパッケージ開発/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(新橋駅) -
金融機関向けシステム更改/Java/東京都江東区/【WEB面談可】/テレワーク
月給46万~51万円東京都江東区(豊洲駅) -
大手通信会社者向けWebシステム改修/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(品川駅)