プログラミング

【Java入門】Stringの使い方まとめ

投稿日:

概要

Javaでもっともよく使う基本的なオブジェクト型はStringではないでしょうか。
Stringには便利なメソッドが多数用意されているので、それらをうまく使えるようになることはコーディングの上達に不可欠と言えます。
 

Stringの基本仕様

文字列を扱うクラス

言わずとも知れた文字列を扱うクラスです。
文字列を扱うための様々なメソッドが用意されています。

不変オブジェクト

Stringは不変オブジェクトです。
不変オブジェクトとは、インスタンス生成後に値の上書きが行われないオブジェクトのことです。

以下のようにStringを上書きするコードの場合、実際には新しいインスタンスが生成されています。

これを確認してみましょう。
方法として、別のString型の変数にコピーして、コピー先を変更してみます。
オブジェクト型はコピー先を修正すれば、コピー元も変更されるのが基本仕様ですが、不変オブジェクトであるStringはそうではありません。

以下では、コピー先であるcopiedはfirstの変更の影響を受けていません。

<出力結果>
first : changed first
copied : first

図解すると、以下のようになります。

これを知って何になるのかというと、Stringを大量に代入(文字列連結も含む)する処理はパフォーマンスに影響を与える可能性があるという認識を持てることです。

インスタンスの生成にはコストがかかるので、大量に連結する場合はStringBuilderクラスを使うことが推奨されています。
 

使い方別のメソッドまとめ

文字列の位置を取得

<indexOfメソッド>

<実行結果>
indexOf [a] -> 0
indexOf [ab] -> 0
indexOf [e] -> 4
indexOf [f] -> -1

<説明>
indexOfは、一致した文字列の最初のインデックス番号を返します。
上記の例だと、[ab]が一致した最初のインデックスは、[a]の手前である「0」が返ってきます。

文字列とインデックスの位置を図解すると、以下のようになります。

[f]のように、一致する文字列が無い場合は「-1」が返ってきます。
 

一字のみ(char)を取得

<charAtメソッド>

<実行結果>
charAt [0] -> a
charAt [4] -> e
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5
(...出力情報は省略)

<説明>
インデックスを指定すると、charを返してくれます。
ただし、文字列のインデックスを超えて指定した場合は、「StringIndexOutOfBoundsException」がスローされます。
上記だと、インデックスの5は範囲外であると表示されています。
 

文字列の切り出し

<substringメソッド>

<実行結果>
substring [0] -> abcde
substring [1,4] -> bcd
substring [1,5] -> bcde
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
(...出力情報は省略)

<説明>
・引数が1つの場合
 指定したインデックス以降を切り取ります。
・引数が2つの場合
 1つ目がインデックス開始位置、2つ目がインデックス終了位置です。
 ただし、インデックス終了位置は含まれません。
 (仕様上は、指定した値から-1されています)
 そのため、[1,5]の指定で最後の[e]までを取得できます。([e]のインデックス番号は4)
・存在しないインデックスを指定した場合
 「StringIndexOutOfBoundsException」がスローされます。
 指定可能な範囲を1つ超えているので、「-1」が表示されています。
 

文字列の置換

<replaceメソッド>

<実行結果>
replace [a => A] -> Abcde
replace [a => AAA] -> AAAbcde
replace [f => F] -> abcde

<説明>
引数の1つ目に指定した文字列が存在する場合、
引数の2つ目に指定した文字列に置換します。

引数の1つ目には、char型またはString型が指定できます。
char型は、シングルクウォーテーション(‘)で囲みます。
String型は、ダブルクォーテーション(“)で囲みます。
 

文字数の取得

<lengthメソッド>

<実行結果>
length -> 5

<説明>
文字列数を返してくれます。
 

文字列の一致判定(前方一致)

<startsWithメソッド>

<実行結果>
startsWith [ab] -> true
startsWith [bc] -> false

<説明>
指定した文字列が、最初から全て一致しているかの判定結果を返します。
一字でも不一致の場合はfalseになります。
 

文字列の一致判定(後方一致)

<endsWithメソッド>

<実行結果>
endsWith [de] -> true
endsWith [cd] -> false

<説明>
指定した文字列が、最後まで全て一致しているかの判定結果を返します。
一字でも不一致の場合はfalseになります。

文字列の一致判定(部分一致)

<matches, containsメソッド>
下記の記事を参照
【Java】文字列の完全一致と部分一致を判定する方法
 

変換する(大文字)

<toUpperCaseメソッド>

<実行結果>
toUpperCase -> ABCDE

<説明>
文字列(英字)を全て大文字に変換します。
 

変換する(小文字)

<toLowerCaseメソッド>

<実行結果>
toLowerCase -> abcde

<説明>
文字列(英字)を全て小文字に変換します。
 

まとめ

  • Stringは文字列を扱うクラスである。
  • Stringは不変オブジェクトであるため、代入の際は常に新規のインスタンスが生成されている。
  • Stringには便利なメソッドが多数用意されている。

参考

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-プログラミング
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

【SpringBoot入門】#3~ Index画面の作成

このチュートリアルでは、簡易な書籍管理システムを作っていきます。 まず最初にIndex画面を作成していきます。 HTML作成 以下の配下にindex.htmlを作成します。 配置先:プロジェクト(ここ …

no image

XSS対策の基本は入力値制限とサニタイジング(無害化)の2つ

XSS(クロスサイトスクリプティング)の基本的な対策は何をすればいいのかがぼんやりしている方向けの書いています。 対策方法はタイトルの通り、XSS(クロスサイトスクリプティング)対策の基本は入力値制限 …

【Java入門】Consumerの使い方まとめ

概要 Consumer<T>は消費者と呼ばれる関数型インターフェースで、acceptメソッドを持ちます。 消費者というだけあって戻り値がありません。 また、引数はT型を1つとります、   …

【Java】TDDして汎用的な部品を作成する(日付期間オブジェクト)

目的 TDDブートキャンプというセミナーに参加して面白かったので、 自分で何かやってみようと思った。 仕様 日付期間を保持するオブジェクトである。 開始日と終了日を持つ。 開始日と終了日を持つことをど …

【Bootstrap】一覧表示をデザインしよう!

概要 一覧表示をデザインします。 Bootstrapにはすぐに使える便利なクラスが用意されているので、それらを使用して実現します。 【SpringBootチュートリアル】#7~ 検索画面の作成に変更を …

記事を探す

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。

サイト内検索