Javaでintをそのまま文字列に代入したらエラーになった…どう変換すればいいの?
型が違うものは直接代入できないんだよね。変換メソッドさえ覚えてしまえば、型エラーで詰まらなくなるよ!
この記事では、Javaの数値と文字列を相互に変換する方法を解説します。

本記事の専門性
現役エンジニアのZettoです。Java GoldとJava Silverの資格を持ち、Javaを使ったフリーランス案件を複数経験しています。
変換の方法を知らないと、型エラーが出るたびに手が止まってしまいます。
この記事を読めば、int→String・String→intの変換方法から、実務で頻出するNumberFormatExceptionの対処法まで一通り理解できます。
ぜひ参考にしてみてください。
Javaの型変換とは|intとStringを変換する前に知っておくこと

変換メソッドを覚える前に、Javaの型のしくみを押さえておきましょう。
- intとStringは直接代入できない|型の壁を理解しよう
- 変換が必要になる代表的な3つの場面
それぞれ確認していきましょう。
intとStringは直接代入できない|型の壁を理解しよう
Javaは「静的型付け言語(型があらかじめ決まった言語)」です。
変数には決まった型があり、違う型をそのまま代入しようとするとコンパイルエラーになります。
たとえば、次のコードはエラーになります。
int num = 100;
String text = num; // コンパイルエラー!イメージとしては、「整数用の箱」と「文字列用の箱」が別々に用意されているような感じです。
異なる型を代入したいときは、変換用のメソッドを通す必要があります。
Javaの変数の宣言方法や型の種類については、以下の記事で詳しく解説しています。

変換が必要になる代表的な3つの場面
型変換が必要になる場面は、主に次の3つです。
- 数値を文字列に埋め込んで画面に表示したいとき
- フォームやコンソールから受け取った入力値を数値として計算したいとき
- データベースから取得した数値データを文字列として扱いたいとき
どの場面も、Javaを使ったWebアプリ開発では頻繁に出てきます。
型変換のしくみを理解しておくと、「なぜエラーが出るのか」がすぐわかるようになります。
型のルールを最初に押さえておくだけで、コンパイルエラーへの見え方がかなり変わります。型があるおかげでバグを早期に発見できるのがJavaの強みですね。
【int → String】数値を文字列に変換する3つの方法

数値を文字列に変換する方法は3種類あります。
- String.valueOf()で変換する(最もおすすめ)
- Integer.toString()で変換する
- 文字列結合(”” + 数値)で変換する
- valueOf・toString・”+”の使い分け比較まとめ
それぞれの書き方と使いどころを押さえましょう。
String.valueOf()で変換する(最もおすすめ)
int → String の変換で最もおすすめなのがString.valueOf()です。
理由は2つあります。
- nullを渡しても”null”という文字列に変換されるため、NullPointerExceptionが起きにくい
- int以外にlong・double・boolean・charなど、幅広い型に対応している
int num = 100;
String text = String.valueOf(num);
System.out.println(text); // "100"
System.out.println(text.getClass().getName()); // java.lang.String変換後のtextはString型なので、文字列の操作や結合が自由にできます。
変換メソッドに迷ったら、まずString.valueOf()を選んでおけば間違いありません。
僕も実務ではString.valueOf()を使うことが多いです。null安全性が高く、コードを読む人にも「これは意図的な変換だ」と伝わりやすいのが気に入っていますね。
Integer.toString()で変換する
Integer.toString()もint → Stringの変換によく使われるメソッドです。
int num = 100;
String text = Integer.toString(num);
System.out.println(text); // "100"Integer.toString()には、第2引数に基数(進数)を指定できる機能があります。
int num = 255;
String binary = Integer.toString(num, 2); // 2進数
String hex = Integer.toString(num, 16); // 16進数
System.out.println(binary); // "11111111"
System.out.println(hex); // "ff"16進数や2進数の文字列に変換したい場面では、Integer.toString()の出番です。
文字列結合(”” + 数値)で変換する
空文字列と数値を+で結合する方法も、変換として使えます。
int num = 100;
String text = "" + num;
System.out.println(text); // "100"書くのは最も簡単ですが、コードを読む人に「なぜ空文字を足しているのか?」が伝わりにくいデメリットがあります。
"" + numは書くのはラクですが、初見だと意図が伝わりにくいのが課題です。
チーム開発では読みやすさを優先してString.valueOf()を使う方が良いかなと感じています。
Javaの演算子の動作については、以下の記事で詳しく解説しています。

valueOf・toString・”+”の使い分け比較まとめ
3つの方法の違いをまとめると、以下の通りです。
| 方法 | 書き方 | 進数変換 | おすすめ度 |
|---|---|---|---|
| String.valueOf() | String.valueOf(num) | ✗ | ★★★ |
| Integer.toString() | Integer.toString(num) | ○ | ★★☆ |
| “” + 数値 | “” + num | ✗ | ★☆☆ |
基本はString.valueOf()を使い、進数変換が必要なときだけInteger.toString()に切り替えるのがおすすめです。
int → Stringの変換方法は、この3つを押さえておけば実務でも十分対応できます。
この3つの中で進数変換が必要になるのは、ネットワーク処理や低レベルな処理を書くときが多いですね。普通のWebアプリ開発では、String.valueOf()だけ覚えておけばほぼ事足りるかなと。
【String → int】文字列を数値に変換する方法

今度は逆方向、String → intの変換を確認していきます。
- Integer.parseInt()で変換する(基本の書き方)
- Integer.valueOf()との違いと使い分け
ひとつずつ見ていきます。
Integer.parseInt()で変換する(基本の書き方)
String → intの変換で最も基本的なメソッドがInteger.parseInt()です。
String text = "100";
int num = Integer.parseInt(text);
System.out.println(num + 50); // 150parseInt()は、数値を表す文字列を引数に受け取り、int型のプリミティブ値(オブジェクトではなく基本的な型の値)を返します。
返ってきた値はそのまま計算に使えるため、フォームの入力値を受け取って計算処理に渡す場面でよく使われます。
注意点として、数値に変換できない文字列を渡すとエラーが発生します。これは次のセクションで詳しく解説します。
Integer.valueOf()との違いと使い分け
Integer.valueOf()もString → intの変換に使えますが、parseInt()と返ってくる型が違います。
String text = "100";
int num1 = Integer.parseInt(text); // int型(プリミティブ)
Integer num2 = Integer.valueOf(text); // Integer型(オブジェクト)主な使い分けは以下の通りです。
- 計算に使いたい場合:parseInt()(intのプリミティブ型が返るため)
- ArrayListなどのコレクションに格納したい場合:valueOf()(Integer型が必要なため)
JavaにはオートボクシングというIntegerとintを自動変換するしくみがあります。実用上の差はほとんどないため、まずInteger.parseInt()を覚えておけば十分です。
String → intの変換はparseInt()を軸に押さえておけば、実務の大半の場面をカバーできます。
parseInt()とvalueOf()の違いは、Java Silverの試験にも出てくる内容です。「intを返すかIntegerを返すか」という違いを軸に覚えると、混乱しにくいですね。
現場で使えるJava型変換の実践知識

変換メソッドの基本を覚えたら、実務でよく出てくる知識も押さえておきましょう。
- 変換失敗で発生するNumberFormatException
- long・double・floatの変換方法
- フォーム入力値やDB取得値を変換する実務ユースケース
詳しく解説していきます。
変換失敗で発生するNumberFormatException
Integer.parseInt()やInteger.valueOf()は、変換できない文字列を渡したときNumberFormatExceptionを投げます。
NumberFormatExceptionは「例外(エラーの一種)」で、処理が強制的に中断される原因になります。
NumberFormatExceptionが起きる主な原因
NumberFormatExceptionが起きるのは、次のようなケースです。
- 数字以外の文字が含まれている(例:”abc”、”100円”、”1,000″)
- 空文字列を渡している(例:””)
- 先頭や末尾にスペースが入っている(例:”100 “)
- int型の最大値(約21億)を超えた数値(例:”3000000000″)
実際にエラーが出るコード例です。
String text = "abc";
int num = Integer.parseInt(text); // NumberFormatException発生!try-catchで安全に変換する書き方
実務では、変換処理をtry-catchで囲んでエラーに備えます。
String input = "abc";
try {
int num = Integer.parseInt(input);
System.out.println("変換成功:" + num);
} catch (NumberFormatException e) {
System.out.println("数値に変換できません:" + input);
}try-catchは「試してみて、失敗したら別の処理をする」しくみです。
ユーザーからの入力値を変換するときは、必ずtry-catchとセットで書くようにしましょう。
Javaの例外処理については、以下の記事でtry-catchの書き方を詳しく解説しています。

NumberFormatExceptionは、Javaを学び始めたころに絶対1度は踏むエラーですね。フォーム入力値を変換するとき、try-catchを忘れると本番でいきなりエラー画面が出て焦ることになります。早めに例外処理とセットで覚えておくのがおすすめです。
long・double・floatの変換方法
int以外の数値型も、同じしくみで変換できます。
| 型 | String → 数値 | 数値 → String |
|---|---|---|
| long | Long.parseLong(“文字列”) | String.valueOf(longValue) |
| double | Double.parseDouble(“文字列”) | String.valueOf(doubleValue) |
| float | Float.parseFloat(“文字列”) | String.valueOf(floatValue) |
使い方はintと同じです。クラス名がLong・Double・Floatに変わるだけと覚えておきましょう。
String text = "3.14";
double d = Double.parseDouble(text);
System.out.println(d + 1.0); // 4.140000000000001doubleの計算では、小数点以下に誤差が生じることがあります。金額計算など精度が必要な場面ではBigDecimalクラスを使うのが一般的です。
フォーム入力値やDB取得値を変換する実務ユースケース
実務では、型変換が必要な場面が頻繁に出てきます。よくあるのは次の2つのケースです。
Webフォームの入力値を数値に変換して計算する
// フォームの入力値はString型で受け取る
String input = request.getParameter("price");
try {
int price = Integer.parseInt(input);
int total = (int)(price * 1.1); // 消費税計算
System.out.println("合計:" + total + "円");
} catch (NumberFormatException e) {
System.out.println("正しい金額を入力してください");
}DBから取得した数値IDを文字列に変換してログに出力する
int userId = resultSet.getInt("user_id");
String log = "ユーザーID:" + String.valueOf(userId) + " がログインしました";
System.out.println(log);どちらも「変換前にnullや空文字をチェックする」習慣をつけておくと、バグを未然に防げます。
変換処理はtry-catchとセットで書くことが、実務での基本の型になります。
実際に僕もフォーム処理を書いたとき、parseInt()のtry-catchを書き忘れてリリース後に冷や汗をかいた経験があります。入力値の変換は必ず例外処理とセット、これが鉄則ですね。
Javaの数値・文字列変換の演習問題

理解を深めるために、演習問題を3つ用意しました。
- 演習問題1:intをStringに変換して画面出力しよう
- 演習問題2:String型の入力値をintに変換して計算しよう
- 演習問題3:NumberFormatExceptionをtry-catchで処理しよう
演習問題1:intをStringに変換して画面出力しよう
問題
次の変数numをString型に変換して、「数字は42です」とコンソールに出力するコードを書いてください。
int num = 42;
// ここにコードを書く解答例
int num = 42;
String text = String.valueOf(num);
System.out.println("数字は" + text + "です");String.valueOf(num)でintをStringに変換します。変換後のtextはString型なので、文字列結合で「数字は42です」を組み立てられます。
演習問題2:String型の入力値をintに変換して計算しよう
問題
次のString型の値をintに変換し、2倍した結果を「2倍は50です」と出力するコードを書いてください。
String input = "25";
// ここにコードを書く解答例
String input = "25";
int num = Integer.parseInt(input);
int doubled = num * 2;
System.out.println("2倍は" + doubled + "です");Integer.parseInt()でStringをintに変換します。変換後のnumはint型なので、そのまま掛け算が使えます。
演習問題3:NumberFormatExceptionをtry-catchで処理しよう
問題
次のコードを、NumberFormatExceptionが発生しても処理が止まらないように修正してください。
String input = "abc";
int num = Integer.parseInt(input);
System.out.println("変換結果:" + num);解答例
String input = "abc";
try {
int num = Integer.parseInt(input);
System.out.println("変換結果:" + num);
} catch (NumberFormatException e) {
System.out.println("数値に変換できない文字列です:" + input);
}parseInt()の処理をtry{}で囲みます。”abc”は数値に変換できないため、catchブロックに処理が移ってエラーメッセージが出力されます。処理が止まらず続くのがポイントです。
演習問題3まで解けたなら、型変換の基礎はしっかり身についています。あとは実際のコードで繰り返し使うだけです。
try-catchは最初「なんか難しそう」と感じやすいですが、実態は「失敗したときの保険」と思えばシンプルですね。演習問題3が解けたなら、Javaの型変換は実務でも通用するレベルです。
Javaの型変換をマスターして、エラーに強いコードを書こう

Javaの数値と文字列の変換について、基礎から実務まで解説しました。大事なポイントをまとめます。
- int → String の変換は
String.valueOf()を基本に使う - String → int の変換は
Integer.parseInt()を使う - parseInt()でエラーが起きる場合はtry-catchで安全に処理する
型変換はJavaを使う限り、どんな現場でも必ず出てくる基礎知識です。
まずはサンプルコードを手元で動かして、自分の指で打ってみるのが一番の近道かなと。
最初は難しそうに見えたけど、メソッドを3つ覚えるだけでよかったんだね!
一度覚えてしまえば、あとは使うたびに自然と身についていくよ。実際に手を動かしながら使っていくのが一番だね。
Javaのメソッドの定義方法や呼び出し方についてさらに深めたい方は、以下の記事もあわせて読んでみてください。
