JavaでintとStringを相互変換する完全ガイド|安全な方法・注意点・便利なユーティリティ付き

目次

1. はじめに:なぜ「int⇔String変換」が必須なのか

Javaを使って開発をしていると、「int型」と「String型」の相互変換は避けて通れない基本操作のひとつです。たとえば、ユーザーが入力フォームに数字を入力した場合、その値はプログラム内では一度文字列(String型)として受け取ります。しかし、計算処理を行いたい場合はint型などの数値型に変換する必要があります。逆に、計算で得られた数値を画面に表示したり、ファイルやデータベースに保存したりする際には、今度はint型からString型へ変換しなければなりません。

こうした「型変換」は、Javaに限らず多くのプログラミング言語で日常的に登場しますが、Javaの場合は明示的な変換(キャストやメソッドの利用)が必要になるため、初心者がつまずきやすいポイントでもあります。また、型変換の方法によってはエラーが発生したり、予期しない挙動となる場合もあるため、正しい知識とベストプラクティスを身につけることがとても重要です。

この記事では、Javaにおける「int」と「String」の変換方法を、基礎から実践的な応用例まで詳しく解説します。基本的な使い方はもちろん、現場でありがちなミスやパフォーマンス比較、よくある質問まで幅広くカバーしますので、ぜひご自身の開発に役立ててください。

2. 【基礎】int→Stringへの変換方法まとめ

Javaで「int型」の数値を「String型」の文字列に変換する方法はいくつかあります。用途や好みによって使い分けが可能ですが、可読性やパフォーマンス、今後のメンテナンス性まで考慮すると、推奨される方法があります。ここでは代表的な3つの方法と、それぞれの特徴を解説します。

2.1 String.valueOf(int) の使い方

最も汎用的で安全な方法が、String.valueOf(int) を使うパターンです。
このメソッドはint型だけでなく、他のプリミティブ型(long, float, doubleなど)やオブジェクト型にも幅広く対応しています。

int num = 123;
String str = String.valueOf(num);  // strは "123" になる

String.valueOfはnullに対しても「”null”」という文字列を返すため、予期しない例外(NullPointerException)が起こりにくい点も特徴です。安全性や可読性を重視する場合、まずこの方法を選んでおくと安心です。

2.2 Integer.toString(int) の使い方

もう一つよく使われるのが、Integer.toString(int) メソッドです。
Integerクラスはint型のラッパークラスで、この静的メソッドを使うと、int値を簡単に文字列へ変換できます。

int num = 456;
String str = Integer.toString(num);  // strは "456" になる

パフォーマンス面でも非常に優秀で、String.valueOfとほぼ同等。用途によってどちらを選んでも大きな違いはありませんが、「intをStringにしたい」と明示する場面ではInteger.toStringが直感的にわかりやすいでしょう。

2.3 空文字との連結(”” + i)での変換

意外と多くの人が使っているのが、空文字との連結による変換方法です。

int num = 789;
String str = "" + num;  // strは "789" になる

この方法もJavaの仕様として問題なく動作しますが、変換の意図がコードから見えにくく、チーム開発やレビュー時に「何をしたいのか」が伝わりにくいという欠点があります。ごく簡単な用途なら許容されますが、推奨度はやや下がります。

2.4 【比較表】各手法の違い・使い分け早見表

変換方法可読性パフォーマンス推奨度備考
String.valueOf(int)高い非常に良い◎(推奨)null対応・他型にも使える
Integer.toString(int)高い非常に良い◎(推奨)int型変換に特化
“” + int普通良い○(限定的)意図が伝わりにくい、簡易用途

どの方法を使っても動作に大きな差はありませんが、基本は「String.valueOf」または「Integer.toString」を使うことをおすすめします。開発現場でも推奨されている標準的な手法なので、ぜひこの2つを中心に活用してみてください。

3. 【基礎】String→intへの変換方法まとめ

Javaでは、文字列(String型)から整数(int型)への変換も非常に頻繁に使われます。たとえば、ユーザーがフォームに入力した数値や外部ファイルから取得したデータは、ほとんどの場合「文字列」としてプログラムに渡ってきます。これを計算処理などで利用するためには、int型への変換が必要不可欠です。ここでは代表的な3つの変換方法と、それぞれの違いや注意点を解説します。

3.1 Integer.parseInt(String) の使い方

もっともよく使われる基本の方法が、Integer.parseInt(String)です。
このメソッドは、渡された文字列をint型の値に直接変換します。

String str = "123";
int num = Integer.parseInt(str);  // numは 123 になる

注意点として、変換対象の文字列が「数値として解釈できない場合」(例: “abc” や “”)は NumberFormatException という例外が発生します。したがって、ユーザー入力など不確かな値を扱うときは、try-catchで例外処理を行うのが安全です。

3.2 Integer.valueOf(String) の使い方

Integer.valueOf(String)も、文字列からint値への変換に使えるメソッドです。
違いは、戻り値が「int型」ではなく「Integer型(オブジェクト)」である点です。

String str = "456";
Integer numObj = Integer.valueOf(str);  // numObjは 456(Integer型)
int num = numObj.intValue();            // int値として利用も可能

内部的にはparseIntとほぼ同じ変換を行っており、こちらも変換できない文字列の場合はNumberFormatExceptionが発生します。
「null許容型」や「オブジェクトとして管理したい場面」では、valueOfを使うメリットがあります。

3.3 new Integer(String)【非推奨】

一昔前はnew Integer(String)のようにコンストラクタで変換する方法も使われていましたが、
現在は非推奨(Deprecated)となっており、利用しないよう注意が必要です。Java9以降は警告が出ます。

String str = "789";
Integer numObj = new Integer(str);  // ※非推奨、今後は使わない

3.4 【比較表】各手法の違い・推奨度早見表

変換方法戻り値パフォーマンス推奨度備考
Integer.parseInt(String)int非常に良い◎(推奨)例外発生時に注意
Integer.valueOf(String)Integer型非常に良い◎(推奨)null許容やラッパー利用向け
new Integer(String)Integer型劣る×(非推奨)現在は使用禁止

実際の開発現場では、「基本はparseInt」「必要に応じてvalueOf」と覚えておけば十分です。
予期せぬエラーを防ぐため、必ず例外処理や入力値チェックもあわせて実装するようにしましょう。

4. 【実践】サンプルコード集

ここでは、Javaでint⇔String変換を行う具体的なコード例をまとめて紹介します。基本的なパターンから、実際の開発現場で役立つ例外処理のテクニックまで、すぐにコピペして使えるサンプルを掲載します。

4.1 int型からString型への変換サンプル

int num = 100;

// 1. String.valueOfを使う
String str1 = String.valueOf(num);

// 2. Integer.toStringを使う
String str2 = Integer.toString(num);

// 3. 空文字列との連結
String str3 = "" + num;

System.out.println(str1); // 出力: 100
System.out.println(str2); // 出力: 100
System.out.println(str3); // 出力: 100

4.2 String型からint型への変換サンプル

String str = "250";

// 1. Integer.parseIntを使う
int num1 = Integer.parseInt(str);

// 2. Integer.valueOfを使う(Integer型で受け取る場合)
Integer num2 = Integer.valueOf(str);

System.out.println(num1); // 出力: 250
System.out.println(num2); // 出力: 250

4.3 変換時の例外処理(NumberFormatExceptionへの対応)

文字列をintに変換する際は、必ず例外が発生しうることを想定してください。
例えば、ユーザー入力や外部データを変換する場合はtry-catchで例外処理を追加しましょう。

String input = "abc"; // 数値に変換できない場合

try {
    int num = Integer.parseInt(input);
    System.out.println(num);
} catch (NumberFormatException e) {
    System.out.println("数値変換できません: " + input);
    // 必要に応じてエラー処理を記述
}

4.4 nullや空文字の扱いにも注意

String nullStr = null;
String emptyStr = "";

// String.valueOfはnullでも"null"の文字列になる
String s1 = String.valueOf(nullStr); // s1は "null"
System.out.println(s1);

// parseIntやvalueOfは空文字やnullで例外をスロー
try {
    int n1 = Integer.parseInt(emptyStr); // 例外発生
} catch (NumberFormatException e) {
    System.out.println("空文字は数値に変換できません");
}

try {
    int n2 = Integer.parseInt(nullStr); // NullPointerException発生
} catch (NullPointerException e) {
    System.out.println("nullは数値に変換できません");
}

4.5 実務向け:安全な変換メソッド例

よく使うパターンとして、例外を吸収して0やデフォルト値を返す「安全な変換」用ユーティリティを自作しておくと便利です。

public static int safeParseInt(String str, int defaultValue) {
    try {
        return Integer.parseInt(str);
    } catch (Exception e) {
        return defaultValue;
    }
}

// 使用例
int num = safeParseInt("123", 0);    // => 123
int num2 = safeParseInt("abc", 0);   // => 0
int num3 = safeParseInt(null, -1);   // => -1

サンプルを参考にしながら、ご自身のプロジェクトに合わせて柔軟に利用してください。
特に、ユーザー入力や外部データは「必ず例外処理を行う」のが安全な開発の鉄則です。

5. 【応用】他の数値型(long/float/double)との変換

Javaでは、int型だけでなくlong型、float型、double型など、さまざまな数値型を扱います。実際の開発では、データベースやAPIから受け取るデータの型がintとは限らないことも多いため、こうした他の数値型とString型の変換方法も知っておくと非常に便利です。この章では、それぞれの基本的な変換方法とポイントを解説します。

5.1 long型とString型の変換

// long → String
long l = 123456789L;
String str1 = String.valueOf(l);        // 推奨
String str2 = Long.toString(l);         // こちらもOK

// String → long
String strLong = "987654321";
long l2 = Long.parseLong(strLong);      // 文字列をlongへ変換
Long lObj = Long.valueOf(strLong);      // ラッパークラス型で取得

5.2 float型・double型とString型の変換

// float → String
float f = 3.14f;
String strF = String.valueOf(f);        // 推奨
String strF2 = Float.toString(f);       // こちらもOK

// String → float
String strFloat = "2.718";
float f2 = Float.parseFloat(strFloat);  // 文字列をfloatへ
Float fObj = Float.valueOf(strFloat);   // ラッパークラス型

// double → String
double d = 1.414;
String strD = String.valueOf(d);        // 推奨
String strD2 = Double.toString(d);      // こちらもOK

// String → double
String strDouble = "0.577";
double d2 = Double.parseDouble(strDouble);  // 文字列をdoubleへ
Double dObj = Double.valueOf(strDouble);    // ラッパークラス型

5.3 オーバーロードやラッパークラスの使い分け

String.valueOf()parseXxx()valueOf()は、各数値型ごとにオーバーロードされています。そのため、型ごとに適切なメソッドを選ぶことで、安全かつシンプルに変換できます。
また、プリミティブ型とラッパークラス型(例: intとInteger、doubleとDouble)の違いを理解しておくと、null許容やコレクション利用時にも役立ちます。

5.4 変換時の注意点

  • 浮動小数点(float/double)は、文字列変換時に「丸め誤差」「指数表記」「小数点以下の桁数」などに注意が必要です。必要に応じてDecimalFormatString.formatでフォーマット調整を行いましょう。
  • long型やdouble型は、int型より大きな範囲を扱うため、変換時に桁あふれや精度喪失がないかも意識してください。

他の数値型でも、基本的な変換方法は「int⇔String」とほぼ共通です。
汎用的なユーティリティメソッドを作っておくと、様々な場面で効率的にコーディングできます。

6. 【注意】よくあるミス・失敗例

int型とString型の変換は一見シンプルですが、実際の現場や初心者がよく陥るミスも少なくありません。ここでは、トラブルになりやすい代表的なケースを具体例とともに紹介し、対策も解説します。これらを押さえておけば、エラーや予期しない挙動を防ぐことができます。

6.1 全角数字・空文字・nullでのエラー

日本語環境のシステムやユーザー入力では「全角数字」や「空文字」、さらには「null」が入力されることも珍しくありません。
しかし、これらをそのまま数値変換しようとすると例外が発生します。

String zenkaku = "123";   // 全角数字
String empty = "";          // 空文字
String nullStr = null;      // null

try {
    int num1 = Integer.parseInt(zenkaku); // NumberFormatException
} catch (NumberFormatException e) {
    System.out.println("全角数字は変換できません");
}

try {
    int num2 = Integer.parseInt(empty);   // NumberFormatException
} catch (NumberFormatException e) {
    System.out.println("空文字は変換できません");
}

try {
    int num3 = Integer.parseInt(nullStr); // NullPointerException
} catch (NullPointerException e) {
    System.out.println("nullは変換できません");
}

対策:

  • 変換前に「nullチェック」「空文字チェック」を必ず行う
  • 全角数字の場合は半角変換処理を加える(例:replaceAll("[0-9]", ...)など)

6.2 NumberFormatException発生時の対策

Integer.parseIntInteger.valueOfは、不正な文字列を変換しようとすると必ずNumberFormatExceptionが発生します。
これを無視すると、プログラムが途中で停止してしまうリスクがあります。

対策例:

String input = "abc";
try {
    int num = Integer.parseInt(input);
} catch (NumberFormatException e) {
    System.out.println("数値に変換できない値が入力されました: " + input);
}

 

6.3 未処理例外でプログラムが止まるケース

例外処理(try-catch)が無い場合、ユーザー入力や外部データでエラーが発生すると、そのままアプリケーションが異常終了します。
特に、Webアプリやサーバーサイドプログラムでは、サービスダウンや不正なデータ保存につながるので要注意です。

対策:

  • 必ず例外処理を実装する(特に外部データ・ユーザー入力時)
  • 例外発生時のリカバリー(デフォルト値やエラー表示など)を明確に設計する

まとめ

int⇔Stringの変換は単純に見えて、現場では意外と落とし穴が多いものです。
「入力値の正規化」「null・空文字チェック」「例外処理」の3つは、必ずセットで実装しましょう。
これだけでも、日々のバグやトラブルを大幅に減らすことができます。

7. 【安心】安全に変換するための実用テクニック

int型とString型の変換は、入力データや外部データの内容によっては思わぬ例外や不具合を招くことがあります。ここでは、安全で実用的な変換方法や、現場でよく使われるベストプラクティスを紹介します。日常の開発にすぐ役立つノウハウなので、ぜひ参考にしてください。

7.1 独自の safeParseInt メソッドの活用

ユーザー入力や外部ファイルの値など、予期しない値が混じる可能性のある場面では「安全な変換メソッド」を自作しておくと便利です。
例外をキャッチしてデフォルト値を返す方法なら、アプリケーションが止まるリスクを大きく減らせます。

public static int safeParseInt(String str, int defaultValue) {
    if (str == null || str.isEmpty()) {
        return defaultValue;
    }
    try {
        return Integer.parseInt(str);
    } catch (NumberFormatException e) {
        return defaultValue;
    }
}

使用例:

int n1 = safeParseInt("456", 0);      // → 456
int n2 = safeParseInt("abc", 0);      // → 0
int n3 = safeParseInt("", 99);        // → 99
int n4 = safeParseInt(null, -1);      // → -1

7.2 nullチェック・空文字チェックの徹底

例外の多くは「null」や「空文字」から始まります。
変換前に必ずチェックし、不要な例外を未然に防ぎましょう。

String input = ...; // どこからきた値でも

if (input != null && !input.isEmpty()) {
    int value = Integer.parseInt(input);
    // ここで安全に処理が可能
} else {
    // デフォルト値やエラー処理を実施
}

7.3 可読性・保守性の高いコード設計例

複数箇所で同じ変換処理を使う場合は、上記のような「ユーティリティメソッド」にまとめておくことで、
再利用性やメンテナンス性も大幅に向上します。
また、変数名やメソッド名は「何を変換しているのか」「どの型からどの型か」が分かるように記述することがポイントです。

良い例:

int userAge = safeParseInt(form.get("age"), 0); // フォームから年齢を取得し変換

悪い例:

int x = Integer.parseInt(s); // 何の値かわかりづらい

7.4 ユニットテストで想定外の入力にも備える

独自メソッドや変換処理を用意したら、テストコードも一緒に作成しておくとさらに安心です。
null・空文字・不正な値・境界値など、あらゆるパターンで期待通り動作するか確認しましょう。

安全な型変換は「チェック・例外処理・再利用性」の3本柱がカギです。
シンプルな工夫でトラブルを減らし、ストレスフリーな開発を目指しましょう。

8. 【検証】パフォーマンス比較と実測

Javaでint型とString型の変換を行う方法はいくつかありますが、大量のデータ処理や高頻度なループの中で使う場合、どの方法を選ぶかによってパフォーマンスにわずかな違いが出ることもあります。この章では、主要な変換手法のパフォーマンス傾向や、実際にベンチマークを行う際のポイントを解説します。

8.1 代表的な変換手法のパフォーマンス傾向

一般的なint→String変換の3つの方法(String.valueOf(int)Integer.toString(int)"" + int)について、
多くのケースでパフォーマンス差はほとんどありません。ただし、厳密なベンチマークを行うとわずかな違いが見られます。

  • Integer.toString(int)String.valueOf(int)
     → ほぼ同じ、どちらも高速。JVMによってはInteger.toStringが若干速い場合も。
  • "" + int
     → 内部的にStringBuilderが使われるため、単純な変換であれば上記2つに比べてわずかに遅い傾向。ただし実用上は微差。

8.2 サンプル:簡易ベンチマークコード

実際にどれくらいの違いがあるのか、簡単なベンチマークプログラムを紹介します。

public class IntToStringBenchmark {
    public static void main(String[] args) {
        int count = 10_000_000;
        int num = 12345;
        long start, end;

        // Integer.toString
        start = System.currentTimeMillis();
        for (int i = 0; i < count; i++) {
            String s = Integer.toString(num);
        }
        end = System.currentTimeMillis();
        System.out.println("Integer.toString: " + (end - start) + "ms");

        // String.valueOf
        start = System.currentTimeMillis();
        for (int i = 0; i < count; i++) {
            String s = String.valueOf(num);
        }
        end = System.currentTimeMillis();
        System.out.println("String.valueOf: " + (end - start) + "ms");

        // "" + int
        start = System.currentTimeMillis();
        for (int i = 0; i < count; i++) {
            String s = "" + num;
        }
        end = System.currentTimeMillis();
        System.out.println(""" + int: " + (end - start) + "ms");
    }
}

8.3 業務レベルの大量データ処理で意識するポイント

  • 1回や10回程度の変換ではパフォーマンス差は無視してOK
  • 何百万回も繰り返すようなループや、バッチ処理、リアルタイム性が問われる処理では「できるだけシンプルかつオーバーヘッドの少ない方法」を選ぶのが無難
  • それでも可読性や保守性が重要なので、過度にパフォーマンスだけを重視する必要はありません
  • 必要に応じてJMH(Java Microbenchmark Harness)などのベンチマークツールで正確な検証も可能

まとめ

int⇔Stringの変換は、通常のアプリ開発ではどの方法を選んでも大きな問題はありません。ただし、大量データ処理やパフォーマンス重視の現場では、「できるだけシンプルな公式メソッドを使う」ことでわずかな差を積み重ねられます。
最適な手法を選ぶには、実際に自分の環境や用途に合わせてベンチマークを行うことも重要です。

9. 【まとめ】用途別おすすめ手法と選び方

ここまで、Javaでint型とString型を相互変換するさまざまな方法や実用的な注意点について解説してきました。
最後に、用途や状況ごとにどの変換手法を選べばよいのか、ポイントを整理してまとめます。

9.1 シンプルな変換が必要なとき

  • int → String
  • String.valueOf(int) または Integer.toString(int)
      → どちらも可読性・パフォーマンスともに優秀で、標準的な方法です。
  • String → int
  • Integer.parseInt(String)
      → 最もストレートで、余計なラッパーも不要。素早く変換したい場合はこちら。

9.2 エラー対策や安全性を重視する場合

  • 予期しない文字列やnull・空文字を扱う場合は、必ず事前にチェックや例外処理を加えましょう。
  • 独自の「safeParseInt」メソッドやnullチェックを活用し、プログラムの安定性を高めてください。

9.3 パフォーマンスを意識したい大量処理の場合

  • 基本的には標準のInteger.toString(int)Integer.parseInt(String)などが最速です。
  • 文字列連結("" + int)は簡易用途ならOKですが、極端な大量処理やパフォーマンスが重視される場面では避けたほうが安心です。

9.4 ラッパークラス型(Integerなど)が必要な場合

  • コレクションでnullを許容したい、int型ではなくオブジェクト型で扱いたい場合はInteger.valueOf(String)Integer.valueOf(int)を活用します。

9.5 他の数値型との変換

  • long、float、double型も「valueOf」や「parseXxx」メソッドで同様に変換できます。用途に応じて適切な型のメソッドを選びましょう。

9.6 変換処理を安全・効率的にまとめるコツ

  • 変換処理は共通のユーティリティメソッドとしてまとめておくと、再利用や保守が格段にラクになります。
  • どの型の変換なのか、何の目的かが分かりやすい変数名・メソッド名を心掛けましょう。

まとめ

int型とString型の相互変換はJava開発の“基礎中の基礎”ですが、
細かな注意点や使い分けを知っておくことで、より安全かつ効率的にプログラミングできます。
本記事を参考に、自分のプロジェクトや用途に合った最適な変換方法を選んでください。

10. 【関連リンク・参考情報】

ここでは、intとStringの変換に関連する公式ドキュメントや、さらに理解を深めるのに役立つ関連記事へのリンクをまとめて紹介します。これらの情報を活用することで、Javaの型変換についてより幅広く・深く学ぶことができます。

10.1 Java公式ドキュメント(外部リンク)

10.2 おすすめ関連記事

関連記事

1. はじめに Javaにおける整数型の基本 Javaでは数値を扱う際、最も基本的な型のひとつが「整数型(int)」です。これは、プログラムの中で数値計算を行うときに頻繁に利用されるプリミティブ型(基本型)であり、int型を使えばメモリ[…]

10.3 その他の参考情報

これらのリンクをブックマークしておけば、日々の開発や学習時にすぐに役立つはずです。
必要に応じて、関連記事とあわせて体系的に知識を広げていきましょう。

11. 【FAQ】よくある質問まとめ

Javaでint型とString型を変換する際、多くの人が疑問に思うポイントや、現場で頻繁に出てくる質問をQ&A形式でまとめました。疑問が出てきたときは、まずこのFAQを確認してみてください。

Q1. "" + int で変換しても問題はありませんか?

A. シンプルな用途や一時的な処理では問題ありませんが、可読性やメンテナンス性を考えると String.valueOf(int)Integer.toString(int) を使うのが推奨です。チーム開発やコードレビューの観点からも、明示的なメソッドの利用が安心です。

Q2. String.valueOf(null)null.toString() の違いは?

A. String.valueOf(null)"null" という文字列を返します。一方、null.toString()NullPointerException をスローします。null値の扱いには十分注意しましょう。

Q3. 全角数字や空文字を数値に変換したい場合は?

A. Integer.parseInt("123") のような全角数字は NumberFormatException となります。全角数字を扱う場合は、事前に半角変換処理を行いましょう。また、空文字列も変換不可なので、変換前にnullや空文字チェックを必ず行うことが重要です。

Q4. ラッパークラス(Integerなど)を使うメリットは何ですか?

A. Integerなどのラッパークラス型は、コレクションにnullを格納したい場合や、オブジェクト型としての柔軟な扱いが必要な場合に有用です。int型はnullを扱えないため、null許容が必要なシーンではIntegerを使いましょう。

Q5. 大量データの変換を高速に行いたい場合のコツは?

A. 基本的には標準のInteger.parseInt()Integer.toString()などが最速です。ループ内などで繰り返し使う場合は、変換処理をシンプルに保ち、パフォーマンスの最適化が必要ならベンチマークを実施しましょう。

Q6. 小数点のある文字列や数字をintに変換できますか?

A. できません。"123.45" のような小数点付き文字列を Integer.parseInt() で変換しようとすると NumberFormatException となります。小数点以下を切り捨ててint型に変換したい場合は、まずDouble.parseDouble()Float.parseFloat()で小数として受け取り、(int)でキャストしてください。

Q7. マイナス記号や符号のついた文字列もintに変換できますか?

A. "−123"のようなマイナス記号(全角)は変換できませんが、半角の "-123" は問題なく変換できます。符号付き数値を扱う際は、全角・半角の違いに注意しましょう。

このFAQを活用することで、型変換まわりの“よくあるつまずき”を事前に回避できます。
追加で知りたい質問があれば、お気軽にご相談ください。

12. 【付録】コピペで使える便利ユーティリティコード集

Javaでint型やString型を安全かつ効率的に変換するために、日常の開発現場ですぐに使えるユーティリティコードをまとめました。自分のプロジェクトに取り込んで、メンテナンス性・安全性を高めましょう。

12.1 安全な文字列→int変換:safeParseInt

不正な文字列やnullが入力されたとき、例外を発生させずに任意のデフォルト値を返す安全な変換メソッドです。

public static int safeParseInt(String str, int defaultValue) {
    if (str == null || str.isEmpty()) {
        return defaultValue;
    }
    try {
        return Integer.parseInt(str);
    } catch (NumberFormatException e) {
        return defaultValue;
    }
}

使用例:

int n1 = safeParseInt("456", 0);      // → 456
int n2 = safeParseInt("abc", 0);      // → 0
int n3 = safeParseInt("", 999);       // → 999
int n4 = safeParseInt(null, -1);      // → -1

12.2 nullや例外対応付きのint→String変換

通常の変換はString.valueOf(int)Integer.toString(int)で十分ですが、
nullやラッパークラス型(Integer型)を含む場合の安全な変換例です。

public static String safeIntToString(Integer value, String defaultValue) {
    if (value == null) {
        return defaultValue;
    }
    return Integer.toString(value);
}

使用例:

String s1 = safeIntToString(123, "N/A");    // → "123"
String s2 = safeIntToString(null, "N/A");   // → "N/A"

12.3 全角数字を半角に変換するサンプル

日本語入力や外部データで全角数字が混じる場合は、変換前に半角へ置き換えましょう。

public static String zenkakuToHankaku(String str) {
    if (str == null) {
        return null;
    }
    return str.replaceAll("[0-9]", m ->
        String.valueOf((char)(m.group().charAt(0) - '0' + '0'))
    );
}

使用例:

String halfWidth = zenkakuToHankaku("1234"); // → "1234"
int n = safeParseInt(halfWidth, 0);            // → 1234

12.4 汎用的な数値型の変換ユーティリティ(long/float/double)

他のプリミティブ型やラッパークラス型でも同様にユーティリティを作成できます。

public static long safeParseLong(String str, long defaultValue) { ... }
public static float safeParseFloat(String str, float defaultValue) { ... }
public static double safeParseDouble(String str, double defaultValue) { ... }

これらのユーティリティコードをプロジェクトに用意しておくことで、
日々の開発が格段にスムーズになり、予期しないバグや例外も大幅に減らすことができます。
ぜひ自分用にカスタマイズしてご活用ください。