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

  1. FEnetJava
  2. Javaコラム
  3. Java入門
  4. JavaのintとStringの変換について解説!

JavaのintとStringの変換について解説!

  • Java入門
公開日時:   更新日時:
JavaのintとStringの変換について解説!
この記事でわかること
    システム
    エンジニア
    ●●
    プロジェクト
    マネージャー
    ●●

    JavaのintとStringとは?


    Javaのintは数値型で、プリミティブ型と言われます。-2,147,483,648から2,147,483,647までの範囲を表すことができて、Javaで最も多く使われる数値型と言えます。以下のように利用します。

    int val = 100;
    int val2 = val + 200;

    Stringは文字列のクラス名で、参照型です。これもJavaで最も多く使われるクラス型と言えるでしょう。以下のように利用します。

    String str = “”文字列です。””;
    String str2 = str + “”追加もできます。””;

    この記事ではJavaでintとStringを相互に変換する方法などを解説します。

    int型の数値の文字列への変換

    int型の数値の文字列への変換はStringクラスのvalueOfメソッドで行います。

    int val = 123;
    String val_str = String.valueOf(val);

    IntegerクラスのtoStringメソッドを使う方法もあります。

    int val = 123;
    String val_str = Integer.toString(val);

    それ以外では、空の文字列に付け加える方法もあります。

    int val = 123;
    String val_str = “””” + val;

    どれでも好きなやり方で行って構いません。

    文字列をint型の数値に変換

    では逆に、文字列をint型の数値に変換するにはどうしたらよいのでしょうか。まずIntegerクラスのparseIntを使う方法があります。

    String val_str = “”123″”;
    int val = Integer.parseInt(val_str);

    それ以外では、上で使用したIntegerクラスのvalueOfで文字列からint型への変換もできます。

    String val_str = “”123″”;
    int val = Integer.valueOf(val_str);

    IntegerのvalueOfがintにもStringにも対応できるのは、Javaのオーバーロードという機能を使っているからです。これ1つ覚えれば相互変換ができるので便利です。

    文字列が正しく数値に変換できなかった場合

    文字列を数値にする場合、文字列が正しい数値ではなかったらどうなるのでしょうか。

    String val_str = “”あいう””;
    int val = Integer.valueOf(val_str);

    これを実行すると、NumberFormatExceptionが発生して異常終了します。これを防ぐには、以下のようにtry~catchで囲みましょう。

    try {
    String val_str = “”あいう””;
    int val = Integer.valueOf(val_str);
    } catch (NumberFormatException e) {
    e.printStackTrace();
    }

    正規表現でチェックするサンプル

    文字列が数値として正しいか事前にチェックしたい場合は、正規表現を使います。以下のJavaサンプルをご覧ください。なお実行する時はソースの先頭に「import java.util.regex.*;」を追加してください。

    String str = “”12345″”;
    String reg = “”^-?[0-9]*$””;
    Pattern p = Pattern.compile(reg);
    Matcher m = p.matcher(str);

    if (m.find()) {
    System.out.println(Integer.valueOf(str));
    }

    正規表現で文字列の数値判定ができる

    “”^-?[0-9]*$””という不思議な文字列によって、対象の文字列が数値かどうかを判定しています。^は先頭か、-?はマイナスが0個か1個か、[0-9]*は0から9が繰り返されるか、$は末尾か、という意味です。文字列が-と0~9だけで構成されているか、ということです。

    正規表現は非常に機能が豊富で、あらゆる文字列のパターンマッチングができます。興味があれば是非調べてみてください。

    16進数の文字列変換は?

    なおint型は10進数だけでなく16進数も使えます。16進数とは9の次が10ではなくAになり、B、C、D、E、Fと続き、その次が10になります。int型に代入する時は先頭に0xを付けて以下のようにします。大文字・小文字の区別はありません。

    int hex = 0xabc;

    ところが以下のように16進数の文字列を変換しようとすると、NumberFormatExceptionになってしまいます。どうしたら変換できるのでしょうか。

    String val_str = “”0xabc””;
    int val = Integer.valueOf(val_str);

    Integer.decodeを活用しよう

    正解はInteger.decodeを使用します。以下のJavaサンプルを実行すると、

    String val_str = “”0xabc””;
    int val = Integer.decode(val_str);
    System.out.println(val);

    以下が表示されます。

    2748

    Integer.decodeは10進数にも使えるので、valueOfよりこちらを使うのも良いでしょう。なおint型の数値を16進数文字列にするには以下のようにします。

    String hex_str = String.format(“”0x%03x””, Integer.valueOf(2748));
    System.out.println(hex_str);

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

    0xabc

    Integerクラスはインスタンスを持てる

    ここまでIntegerというクラスで変換をしてきましたが、このIntegerというクラスはインスタンスを持つことができます。以下のようにすれば123という数値を持つインスタンスを生成できます。

    Integer iObj = Integer.valueOf(123);

    Integerクラスは数値をラップしたインスタンスを作ることが出来るのです。int型の変数にない長所としては、まずnullにすることができます。int型の変数の場合、0や-1と言う数値にも意味があるので「中身が無い」と言う状態にできません。

    Integer型ならばnullを入れれば「中身が無い」と言う状態にすることができます。プログラムにおいて、未初期化の状態と0が入っている状態は区別したいことが多いのです。

    Integerクラスならコレクションが使える

    Integerクラスのインスタンスのもう一つの利点は、クラスであるためコレクションで使用できることです。以下のようにList型の要素として扱うことができます。int型の変数は配列変数が使えますが、List型にあるような便利な機能は配列にはありません。

    List<Integer> list = new ArrayList<>();
    list.add(Integer.valueOf(100));
    list.add(Integer.valueOf(200));
    list.add(Integer.valueOf(300));
    list.forEach(System.out::println);

    なお上のJavaサンプルを利用する場合は先頭に「import java.util.*;」を追加してください。実行結果は以下になります。

    100
    200
    300

    Integerインスタンスの変換

    Integerクラスのインスタンスは数値文字列でも生成することができます。

    Integer iObj = Integer.valueOf(“”123″”);

    Integerクラスのインスタンスをint型の変数に戻すには、以下のようにします。

    Integer iObj = Integer.valueOf(123);
    int i = iObj.intValue();

    文字列にするには以下のようにします。

    Integer iObj = Integer.valueOf(123);
    String str = iObj.toString();

    システム
    エンジニア
    ●●
    プロジェクト
    マネージャー
    ●●

    JavaのintとStringの変換はプログラミングの基本

    Javaのint型とString型の変換について解説しましたが、ご理解頂けましたでしょうか。Javaで数値と文字列を変換する機会はとても多いので、しっかりとマスターしましょう。

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

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

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

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

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

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

    • 充実した研修制度

      充実した研修制度

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

    • 資格取得を応援

      資格取得を応援

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

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

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

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

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

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

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

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

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

    Java新着案件New Job