文字列が持つ機能

メソッド

文字列が基本データ型と違うもう一つの理由は機能を持っていることです。.equals()もその一つです。これをメソッドといいます。

もちろん、「機能は文字列でなくjavaが持っているもので、文字列に摘要しているのだ」と考えても同じと思うかもしれませんが、クラスの勉強をすると「文字列が機能を持っている」ことがわかります。

機能の呼び出しは、文字列.メソッド名() となります。()の中にはデータがあるものもないものもあります。

文字列の長さ

int length()

文字列の長さ(文字数)を返します。長さはintの値となります。

ファイル名 Smethod.java

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 indexOf()

文字列の中の文字や文字列の位置を返します。intの値となります。

ファイル名 Smethod2.java

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 lastIndexOf()

文字列の中の文字や文字列の位置を返します。intの値となります。

ファイル名 Smethod3.java

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 substring()

文字列の一部分を返します。Stringの値となります。

ファイル名 Smethod4.java

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

課題

1.

上の Smethod.java Smethod2.java Smethod3.java Smethod4.java をつくって結果を確認しなさい。

2.

ファイル名 Smethod5.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 になる)


Javaプログラミング(May.2011)
聖愛中学高等学校
http://www.seiai.ed.jp/