IT転職・プログラミングスクール

substringメソッドに惑わされるな!【Java Silver例題】

Java Silver 例題

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。

今回は、substringメソッドについてです。

 

文字列から指定した位置の文字を取得できるsubstringメソッドは、Javaエンジニアが知ってて当たり前のメソッドの1つです。

Java Silverでは高確率で出題されるため、十分に理解しておく必要があります。

 

問題:substringメソッドについて

早速ですが、次の3問を解いてみてください。

問1

A.    BirdCa
B.    Bird C
C.    ird Ca
D.    ird C
E.    コンパイルエラー

 

問2

A.    a
B.    t
C.    Bird Ca
D.    Bird Cat
E.    at Dog
F.    t Dog
G.  コンパイルエラー

 

問3

A.   Bird
B.    ird
C.    d C
D.    d Ca
E.    rd C
F.    コンパイルエラー

 

いかがでしょうか?

 

 

答えは

問1 D
問2 F
問3 B  です。

 

Java Silver 問題集
参考記事【Java Silver問題集】高頻出・間違えやすい問題たち

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。 出題確率が高く、間違いやすい例題が解説付きで100問以上あります。   Java Silver 問 ...

続きを見る

 

substringメソッドのポイントとコツ

substringメソッドは、文字列から特定の文字を取得しますが、次のポイントに気をつけなければなりません。

 

ポイント

●substring(n,m)
n番目の文字からm番目の文字の前までの文字を取得する

● substring(n)
n番目の文字から最後の文字から取得する

● 再代入が必要
取得した文字を保持するには再代入が必要

 

1つずつ解説していきます。

 

substringメソッドの2つの使い方

substringメソッドは次の例のように2つの使い方があります。

String str = "あいうえお";
System.out.println( str.substring(1,3) );
System.out.println( str.substring(1) );

出力結果
いう
いうえお

 

出力結果のように、substring(n,m)ではn番目の文字からm番目の文字の前までを取得します。

一方、substring(n)はn番目の文字から最後までの文字を取得します。

 

例文で違和感を感じるように、substringメソッドには厄介なことが2つあります。

 

・文字列は1文字目を0番としてカウントする

これをインデックスといいます。
文字の位置を数えるときは、0からカウントしていく必要があります。

 

・substring(n,m)は、m番目の1文字前まで。

n番目の文字は取得するのに、m番目の文字は取得しないのはなんともややこしいですよね。

これをスッキリさせるコツとして、次のように理解しましょう。

インデックス文字間の位置をカウントし、nの位置とmの位置の間の文字を取得すると覚えると、substring(n,m)に惑わされることはありません。

 

substringメソッドで取得した文字列は再代入で保持する

次のようにsubstringメソッドで取得した文字列は、変数に保持されません。

保持するには再代入をする必要があります。

String str = "あいうえお";
String str2 = str.substring(1,3);
System.out.println( str );
System.out.println( str2 );

出力結果
あいうえお
いう

 

保持されない特徴は、substringメソッドだけにかかわらず、String型に使える全てのメソッドに共通しています。

 

解説

これらのポイントをおさえていれば、今回のような問題は間違えることはないでしょう。

 

問1

A.    BirdCa
B.    Bird C
C.    ird Ca
D.    ird C
E.    コンパイルエラー

 

この問題では5行目の"Bird Cat Dog"から1の位置から6の位置の間の文字を出力します。

ここで気をつけたいのが、空白も1文字とカウントするところです。

したがって、"ird C"と出力するので答えはDです。

 

問2

A.    a
B.    t
C.    Bird Ca
D.    Bird Cat
E.    at Dog
F.    t Dog
G.  コンパイルエラー

 

この問題では"Bird Cat Dog"の7の位置以降の文字全てを出力します。

そのため、"t Dog"と出力するので答えはFです。

 

問3

A.   Bird
B.    ird
C.    d C
D.    d Ca
E.    rd C
F.    コンパイルエラー

 

この問題では"Bird Cat Dog"から6行目で"rd Cat"を取得しています。

しかし、取得後の文字列は代入がされていないため保持されません。

したがって、7行目では"Bird Cat Dog"から取得した"ird"が出力されます。

よって、答えはBです。

 

 

Java Silver 問題集
参考記事【Java Silver問題集】高頻出・間違えやすい問題たち

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。 出題確率が高く、間違いやすい例題が解説付きで100問以上あります。   Java Silver 問 ...

続きを見る

-IT転職・プログラミングスクール
-,

Copyright© 人生2段飛ばし , 2020 All Rights Reserved Powered by AFFINGER5.