Javaで最も利用するクラスの1つに文字列を扱う「String」クラスがあります。
本記事では、JavaのStringクラスを利用した文字列操作について基本的な使い方をご紹介していきます。
目次
Javaで文字列を扱うStringクラスとは
Javaで文字列を扱うためには標準ライブラリの中に用意されているStringクラスを利用します。
Stringクラスでは文字列を保持し、様々な操作を行うことが出来るメソッドが提供されています。
Stringクラスの宣言方法
Stringクラスでは利用する際の宣言方法として下記のように記載します。
String str;
宣言と同時に初期値を設定することも可能です。
String str = "ABCDE";
Stringクラスではnew演算子を使わないの?
オブジェクト指向をご存知の方は、クラスをインスタンス化するためのnew演算子を使わないのかと疑問に思う方もいらっしゃるかと思います。
もちろんStringもクラスですので下記のような記述方法が可能です。
String str = new String("ABCDE");
Stringクラスでは他の参照型クラスと異なり、new演算子を使用せず直接値を設定することが可能な仕組みが予め用意されているため、new演算子を使用せずに値を設定する方法が一般的です。
new演算子を使用するとメモリ領域の面でも無駄な処理が発生してしまうので、直接値を設定する方法が推奨されています。
Javaでの文字列結合の方法を理解しよう!
まずはJavaの文字列操作で利用する機会の多い文字列結合の方法をご紹介していきたいと思います。
「+」演算子を用いた文字列結合
Javaでは「+」演算子を利用することで簡単に文字列結合を行うことが可能です。
文字列 + 文字列
「+」演算子を用いた文字列結合のサンプルコード
実際にJavaプログラムで文字列結合を行ったサンプルが下記のコードです。
public class Main { public static void main(String[] args) throws Exception { String str1 = "ABCDE"; String str2 = "あいうえお"; System.out.println(str1 + str2); } }
サンプルコードを実行した結果が下記の通りとなります。
ABCDEあいうえお
「concat」メソッドを用いた文字列結合
Stringクラスに用意されている「concat」メソッドを利用することでも文字列結合が可能です。
文字列.concat(文字列);
concatメソッドを用いた文字列結合のサンプルコード
Javaプログラムでconcatメソッドを利用した文字列結合のサンプルコードが下記となります。
public class Main { public static void main(String[] args) throws Exception { String str1 = "ABCDE"; String str2 = "あいうえお"; System.out.println(str1.concat(str2)); } }
出力結果は下記の通りです。
ABCDEあいうえお
Javaでの文字列比較の方法を確認しよう!
Javaプログラムにおいて、文字列比較も頻出処理の1つです。
文字列を比較する際にはStringクラスの「equals」メソッドを利用します。
equalsメソッドを用いた文字列比較
equalsメソッドを用いた構文は下記の通りとなります。
文字列.equals(文字列);
equalsメソッドを用いた文字列比較のサンプルコード
JavaプログラムでStringクラスのequalsメソッドを用いた文字列比較のサンプルコードが下記となります。
public class Main { public static void main(String[] args) throws Exception { String str1 = "あいうえお"; String str2 = new String("あいうえお"); if(str1.equals(str2)) { System.out.println("文字列は同じです。"); } else { System.out.println("文字列は異なります。"); } } }
サンプルコードを実行した結果は下記の通りとなります。
文字列は同じです。
Javaの文字列比較で「==」演算子はなぜ推奨されないのか?
比較演算子の代表として「==」演算子の存在がありますが、Javaの文字列比較では利用が推奨されていません。
「==」演算子を用いて比較を行った場合、メモリ上の同じ場所に比較した文字列が格納されているかを確認しているため厳密な文字列比較とは異なることが理由となります。
サンプルコードのequalsメソッドで比較している部分を「==」演算子に変更してみると、「文字列は異なります。」と出力されることがご確認頂けます。
nullかどうかを確認するためには「==」演算子での比較が必要
「==」演算子での文字列比較は推奨されていないと上述しましたが、文字列が「null」かどうかを判断するためには「==」演算子でのチェックが必要となります。
Stringクラスの「equals」メソッドは文字列がnullの場合、nullPointerExceptionが発生してしまいます。
つまり、比較対象の文字列にnullが含まれる可能性がある場合には、「==」演算子でnullチェックを行った上で「equals」メソッドで文字列比較を行う必要があります。
nullを考慮して文字列比較を行ったサンプルコードの完成形
文字列にnullが含まれている可能性を考慮して作成したサンプルコードが下記となります。
public class Main { public static void main(String[] args) throws Exception { String str1 = null; String str2 = new String("あいうえお"); if(str1 == null) { System.out.println("文字列にnullが設定されています。"); } else { if(str1.equals(str2)) { System.out.println("文字列は同じです。"); } else { System.out.println("文字列は異なります。"); } } } }
サンプルコードを実行した結果が下記の通りとなります。
文字列にnullが設定されています。
Stringクラスのequalsメソッドでは、サンプルコードの「str1」変数に該当する文字列が「null」の場合に、NullPointerExceptionを出力します。
さいごに:Javaの文字列(String)クラスには便利なメソッドがたくさん用意されている
本記事では、Javaで文字列を扱うクラスとして「String」クラスの基本情報から頻出メソッドの紹介を行ってきました。
Stringクラスにはまだまだ便利なメソッドがたくさん用意されており、文字列の「抽出」「検索」「置換」「整形」など様々な処理を行うことが可能です。
一気に様々な処理を覚えることは難しいと思いますので、まず今回ご紹介したStringクラスの使い方から徐々に新しいメソッドも利用出来るように挑戦してみてください。
不注意によるバグを生まないように、文字列にnullが入る可能性のある場合は、nullチェックを行った後equalsメソッドでの文字列比較を行う必要があることをしっかりと意識しておきましょう。