【Java入門】Integerなどのラッパークラスの使い方(変換/比較/null)

image
本多 農
書いた人 本多 農
侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

こんにちは!エンジニアの本多です。

Javaには変数の基本型を便利に使うためのラッパークラスがあります。

この記事では、

・ラッパークラスとは
・ラッパークラス(Integer型)の使い方
・Integer型の最大値と最小値

という基本的な内容から、

・Integer型で数値・文字列の変換
・Integer型のオブジェクトの比較

といった応用的な内容に関しても解説していきます。

今回は、ラッパークラスの様々な使い方をわかりやすく解説します!

ラッパークラスとは

Javaの変数には、基本的なデータを格納するための値型(プリミティブ型)があります。

値型には次のデータ型があります。

・byte
・char
・short
・int
・long
・float
・double
・boolean

String型は値型ではなく、参照型(クラス型)です。

値型は何のメソッドも持たないため、「int.メソッド名()」のように、ドット演算子でメソッドを呼び出すことはできません。

この値型を、参照型のようにインスタンス化ができて、便利なメソッドを使えるようにしたクラスをラッパークラスといいます。

例えば、int型のラッパークラスはIntegerクラスになります。

ラッパークラス(Integer)の基本的な使い方

ここでは、ラッパークラスの使い方を解説します。

例として、値をIntegerクラスのtoStringメソッドで文字列に変換してから出力する方法を解説します。

int型とInteger型のそれぞれの使い方を次のプログラムで確認してみましょう。

実行結果:

Integer型の最大値と最小値

Integer型の最大値と最小値は簡単に取得することができます。

間違って最大値を超えた値を格納しようとしないように注意してください。

次のプログラムで確認してみましょう。

実行結果:

このように「Integer.MIN_VALUE」と「 Integer.MAX_VALUE」を使って最大値と最小値を取得することができました。

Integer型で数値・文字列の変換

数値から文字列、または文字列から数値への変換方法を解説します。

valueOfで数値から文字列に変換

まずは数値から文字列への変換です。

実行結果:

StringクラスのvalueOfメソッドを使って変換しています。

ちなみにプリミティブ型の変数や値、つまりvalueOf(10)としても問題なく動作します。

parseIntで文字列から数値へ変換

次に、文字列から数値への変換をします。

IntegerクラスのparseIntメソッドを使います。

実行結果:

問題なく変換できました。

nullのチェックをする方法

文字列を数値へ変換する際に、文字列がnullのままうっかり変換してしまう場合があるかもしれません。

そんな場合はNumberFormatExceptionの例外が発生しますので、注意しましょう!

サンプルコードで確認します。

実行結果:

このサンプルコードのように数値に変換する元の文字列がnullの場合、NumberFormatExceptionの例外が発生します。

parseIntメソッドの引数に指定する文字列がnullでないことを確認してからparseIntメソッドを実行させるように記述することをオススメします。

文字列がnullでないことを確認する方法は以下のとおりです。

String型がnullかどうかをチェックする方法については、次の記事に詳細な説明がありますのでぜひ参考にしてください!

Integer型のオブジェクトの比較

Integer型のオブジェクトを比較してみます。

方法はいくつかあるので、順に解説していきます。

比較演算子による比較

Ingeger型のオブジェクトを比較演算子==で比較するとどうなるか、次のプログラムで確認してみましょう。

実行結果:

このサンプルコードでは、10という同じ値を入れた2つの変数を、比較演算子 == で比較しました。

お互い10を入れたのだからtrueと表示されるはずですが、結果はfalseとなります。

falseなので、Javaは異なっていると認識したようです。

実は、i10_1 と i10_2はオブジェクトなので、比較演算子による値の比較ができなくなっています。

厳密にいうと比較演算子は使えるのですが、返ってくるのはメモリ上のアドレスが同じかどうか、つまり同じオブジェクトかどうか、という比較になります。

先の例では、参照先の値は同じでも、オブジェクトとしては別物なので false が返ってきたということになります。

よって、参照先の値が同じかどうかを比較する場合は比較演算子ではなく、次で解説するequalsメソッドを使ってください。

equalsによる比較

文字列の比較でもよく使われる、equalsメソッドによる比較です。

実行結果:

equalsメソッドで、オブジェクトの参照先の値を比較しているため、正しい結果が得られました。

equalsによる比較についての詳しい使い方はこちらの記事で解説しているので、ぜひ確認してください。

compareToによる比較

先のequalsメソッドでは、等しいかどうかは確認できますが、どちらが大きいかまでは確認できません

よって、大小関係まで比較したい場合は、compareToを使います。

実行結果:

compareToメソッドの戻り値は、以下の通りです。

i10_1 < i10_2 ならば、-1
i10_1 = i10_2 ならば、0
i10_1 > i10_2 ならば、1

compareToメソッドの詳しい使い方はこちらの記事で解説しているのでぜひ確認してください。

クラスの使い方総まとめ

クラスのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

まとめ

この記事では、ラッパークラス(特にIntegerクラス)と数値や文字列への変換を解説しました。

比較的よく見る実装ですので、確実に理解しておくことをおススメします。

もし忘れたら、本記事を参照してくださいね!

Javaカリキュラム無料公開中!
この記事はJava入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Java学習に必要な情報を一つにまとめていますので効率よくJavaを学ぶことが出来ます。この機会に是非活用していただければと思います。


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


最短でJavaを習得したい方へ

もし、あなたが、

「難しすぎて学習が全然進まない」
「学習量が膨大でゴールが見えない」
「エラーを解決するのに何日もかかってしまう」

など、プログラミング学習やキャリアに関してお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_bannar-java1

学習者インタビュー

人気講師インタビュー

人気記事セレクション

プログラミング学習者必見

専属講師に質問し放題、レッスンし放題!最短1ヶ月でフリーランスエンジニア
プログラミング学習カリキュラム無料公開中
Ruby学習カリキュラム無料公開中
Python学習カリキュラム無料公開中
 1記事最大11,000円!テックライター募集


LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

本多 農

本多 農

関西在住のITエンジニアです。普通の会社に勤務しながら、侍エンジニアのインストラクター、ライターとして活動しています。