文字列が基本データ型と違うもう一つの理由は機能を持っていることです。.equals()もその一つです。これをメソッドといいます。
もちろん、「機能は文字列でなくjavaが持っているもので、文字列に摘要しているのだ」と考えても同じと思うかもしれませんが、クラスの勉強をすると「文字列が機能を持っている」ことがわかります。
機能の呼び出しは、文字列.メソッド名() となります。()の中にはデータがあるものもないものもあります。
文字列の長さ(文字数)を返します。長さはintの値となります。
public class Smethod { public static void main( String[] args ) { String s = "abcdef"; System.out.println( s.length() ); s = "日本語のとき"; System.out.println( s.length() ); } }
実行結果。日本語の文字も1文字と数えます。
6 6
文字列の中の文字や文字列の位置を返します。intの値となります。
public class Smethod2 { public static void main( String[] args ) { String s = "abcdefghijklmn"; //mojiichi "01234567890123"; //文字の位置を見るため System.out.println( s.indexOf('d') ); //charを探せます System.out.println( s.indexOf("f") ); //Stringも探せます System.out.println( s.indexOf("ij") ); //文字列でも探せます System.out.println( s.indexOf("a") ); //先頭は0です System.out.println( s.indexOf("ji") ); //含まないときは-1です String u = "m"; System.out.println( s.indexOf( u ) ); //変数内の文字でもOK s = "日本語のとき"; System.out.println( s.indexOf("本") ); //日本語の文字も同じです s = "日a本語のとaき"; System.out.println( s.indexOf("a") ); //最初の文字だけ探します System.out.println( s.indexOf("a",2) ); //開始位置を指定すると2番目も探せます } }
実行結果。
3 5 8 0 -1 12 1 1 6
文字列の中の文字や文字列の位置を返します。intの値となります。
public class Smethod3 { public static void main( String[] args ) { String s = "abcdefghijkabcdefghij"; //mojiichi "012345678901234567890"; //文字の位置を見るため System.out.println( s.lastIndexOf("ef") ); //後ろから探しますが、前からの数を返します System.out.println( s.lastIndexOf("ef",15) ); //これでは同じ15が返ってきます System.out.println( s.lastIndexOf("ef",14) ); //これで4が返ってきます } }
実行結果。
15 15 4
文字列の一部分を返します。Stringの値となります。
public class Smethod4 { public static void main( String[] args ) { String s = "abcdefghijklmn"; System.out.println( s.substring( 3 ) ); //3番目以降最後まで System.out.println( s.substring( 3,5 ) ); //3番目から5-1番目まで } }
実行結果
defghijklmn de
上の Smethod.java Smethod2.java Smethod3.java Smethod4.java をつくって結果を確認しなさい。
上のプログラムを元にして、「こうしたらどうなるだろう」ということを確認するプログラムを作りなさい。
プログラム中に、何を調べたか結果がどうだったかを //などのコメントとして書き込みなさい。
「こうしたらどうなるだろう」というのはたとえば、
s.substring( 3,3 )と同じ数値を指定するとどうなるだろう。
と考えて、プログラムには
System.out.println( s.substring( 3,3 ) ); //同じ数値を指定すると長さ0の文字列
というようにコメントを入れる。
コンパイルできないようなものを作ってしまったときには、
System.out.println( s.substring( 3,3 ) ); //同じ数値を指定すると長さ0の文字列 // System.out.println( s.substring( "3" ) ); //文字は受け付けない
というように、できなかった行全体をコメントにしてコンパイルしておくこと。(しないと課題チェックが ox になる)