【JavaSilver】StringクラスとStringBuilderクラスの違いをマスターしよう!





皆さんこんにちは、新米です。

今回はJava言語でのStringクラスとStringBuilderクラスのそれぞれの役割と違いについて紹介していきます

Stringクラスとは

String型のデータである文字列は、そのデータ自身を書き換えることはできません。

また、String型は参照型なためString型の変数を初期化してから新しくデータを代入すると、文字列が書き換えられるわけではなく新しく文字列が生成されます。

新米太郎
新米太郎

わかりやすくイラストにまとめてみました。

「String型にデータを再代入した場合」

このように変数strに初期値aを設定してから、再度変数strにデータbを代入すると変数の参照先が変わります。

新米太郎
新米太郎

書き換わるのではなく新しく参照先が切り替わるんだよ!

String型に使用できるメソッド

StringクラスはString型の変数に格納されているデータ(文字列)を操作する為のメソッドが様々あります。

<Stringクラスのメソッド>

メソッド名 説明 (例)文字列 結果
charAt(2) 引数にある文字列を返す。開始は0番目とする。 abcdef c
equals(“abcdef”) 引数の文字列と同じか比較し、boolean値で返す。 abcdef true
intern() 一位の文字列を返す abcde abcde
indexOf(‘c’) 引数の文字が最初に最初に出現する位置を返す。開始は0番目〜 abcde 2
length() 文字数を返す。 abcde 5
replace(‘’a,’z’) 第1引数の文字を第2引数で指定した文字に置き換え、結果の文字列を返す。 abcde zbcdef
substring(2) 引数で指定した位置から最後までの文字列を返す。開始は0番目〜 abcde cde

※JavaSilver引用

構文

String型 変数名 . メソッド名();
[サンプルコード]
例)String fruit = “orange”;
String sub = fruit.substring(2);
System.out.print(sub);

実行結果

ange

 

>>Stringクラスのメソッドを詳しく知りたい方はこちらがおすすめ

StringBuilderとは

StringBuilderクラスも文字列を扱うクラスですが、変数に格納した文字列を変更することが可能です。つまり新しくデータを代入する時新しく生成されないで既存の文字列が書き変わります。

新米太郎
新米太郎

こちらもわかりやすくイラストにまとめてみました!

「StringBuilderクラスのString型にデータを再代入した場合」

このように変数strに初期値aを設定してから、再度変数strにデータbを代入すると初期値aがbに書き変わります。

新米太郎
新米太郎

一度生成した文字列を追加したり置き換えたりできるんだね!

StringBuilderクラスの文字列を作成するには配列の宣言同様にnewキーワードを使用します。

構文

StringBuilder str = new StringBuilder(“初期値となる文字列”);

またStringBuilderクラスも変数に格納されているデータ(文字列)を操作する為のメソッドが様々あります。

StringBuilderクラスに使用できるメソッド

<StringBuilderクラスのメソッド>

メソッド名 説明 例) 文字列 結果
append(“XYZ”) 引数の文字列を現在の文字列に追加する。 ABCDEF ABCDEFXYZ
insert(2,”ZZ”) 引数の文字列を引数で指定された位置にある文字列の前に挿入する。 ABCDEF ABZZCDEF
delete(0,3) 第1引数から第2引数の要素数分文字列を削除する。 ABCDEF DEF
replace(3, str.length(),”ZZZ”) 第1引数から第2引数のlength分第3引数に置き換える。 ABCDEF ABCZZZ
substring(2) 引数から最後の文字まで文字列を返す。 ABCDEF CDEF

※JavaSilver引用

[サンプルコード]
例)StringBuilder fruit = new StringBuilder(“orange”);
System.out.print(fruit.subString(2));

実行結果

ange

 

>>StringBuilderクラスのメソッドを詳しく知りたい方はこちらがおすすめ

まとめ:もう一度違いについておさらいしよう!

文字列に対して別の文字列を結合して新たな文字列を作成する時StringクラスとStringBuilderクラスの違いについて見ていきましょう。

新米太郎
新米太郎

文字列同士を連結した場合で最終確認しよう!

例1)
String str1 = “a”;
String str2 = “a” + str2;

例2)
String str1 = “a”;
String str2 = str2.concat(“b”);

 

例3)
StringBuilder str3 = new StringBuilder(“a”);
StringBuilder str4 = str3.append(“b”);

例1と例2は文字列の結合時に新しい文字列が生成されます。例3は文字列の結合時に既存の文字列に書き変わります。

Stringクラス・・・文字の置き換えNO

保持している文字列を書き換えることはできない。
文字列の代入、結合時は新たに文字列が生成される。

StringBuilderクラス・・・文字の置き換えYES

文字列の代入、結合時は既存の文字列が書き変わる。
新たに文字列を生成しない。

 

いかがだったでしょうか?

しっかりとStringクラスとStringBuilderクラスの違いを覚えてメソッドを有効活用していきましょう!

また今後の資格やプログラミングに活かせるように頑張っていきましょう。お疲れ様でした!




コメント

タイトルとURLをコピーしました