【Java】Stringクラスのメソッドについて(substring、toString、length、equalsなど)

 

この記事で分かること
👉JavaのStringのメソッドについて知ることができます。

  1. substring(int , int)
    →文字列の抜き出すことができます。
  2. toString()
    →数値を文字列に変換できます。
  3. length();
    →文字数を取得することができます。
  4. equals()
    →文字列を比較することができます。
  5. charAt(int)
    →文字列の指定したインデックスの位置にある文字を取得することができます。

 

①substring(int , int):文字列の抜き出し操作

substringメソッドは、文字列から部分文字列を抜き出すことができます。

substring(int1 , int2)

int1:抜き出し開始位置
int2:抜き出し終了位置

 

substringサンプルプログラム

 

public class Substringtest {

    public static void main(String[] args) {
        String テスト = "文字列抜き出しテスト";

        //1:最初の3文字を抜き出す
        String 最初の3文字抜き出し = テスト.substring(0,3);
        System.out.println("1:" + 最初の3文字抜き出し);

        //4文字から7文字目を抜き出す
        String 抜き出し4から7文字 = テスト.substring(3,7);
        System.out.println("2:" + 抜き出し4から7文字);

        //最後の3文字目を抜き出す
        String 最後の3文字 = テスト.substring(7,10);
        System.out.println("3:" + 最後の3文字);

        //抜き出し終了位置を指定しない場合は最後まで抜き出し
        String 最後の3文字その2 = テスト.substring(7);
        System.out.println("4:" + 最後の3文字その2);
    }
}

実行結果

1:文字列
2:抜き出し
3:テスト
4:テスト

 

例外が発生するケース

上記のケースの場合は例外が発生します

 String テスト = "文字列抜き出しテスト";

String 最初の3文字抜き出し = テスト.substring(-1,3);
//抜き出し開始位置は0からであり、-1は範囲外であるため

 //最後の3文字目を抜き出す
String 最後の3文字 = テスト.substring(7,11);
//変数は10文字であり、11文字目は範囲外であるため

実行結果

java.lang.StringIndexOutOfBoundsException
//String メソッドによりスローされ、インデックスが負または文字列のサイズより大きいことを示します。

 

②toString()  数値を文字列へ変換

toStringメソッドは、数値から文字列へ変換することができます。

toString(変数)
//数値から文字列に変換することができます。

 

toStringサンプルプログラム

 

public class toStringtest {

    public static void main(String[] args) {
        int int1 = 111;
        int int2 = 222;
        int int3 = 333;

        int int合計 = int1 +int2 + int3;
        //1:文字列に変換されてないため合計666が出力される
        System.out.println("1:" + int合計);

        String str1 = Integer.toString(int1);
        String str2 = Integer.toString(int2);
        String str3 = Integer.toString(int3);
        //2:文字列に変換されるため111222333が出力される
        String str合計 = str1 +str2 + str3;
        System.out.println("2:" + str合計);
    }
}

実行結果

1:666
2:111222333

toStringメソッドを使用するためにはラッパークラスを使用する必要があります

なお、次のようなメソッドの利用はできません

String str1 = int.toString(int1);
//文法エラー
//型 Class<Integer> のメソッド toString() は引数 (int) に適用できません

「8つの基本データ型の情報を中身に保持すること」を責務とするラッパークラスを使用する必要があります。

そのため、次のようにキーの型名, 値の型名は置き換えて使用する必要があります。

基本データ型   ラッパクラス
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

 

③length() :文字数を取得

lengthメソッドは、文字数を取得することができます。

length()
//文字数を取得することができます。

 

lengthサンプルプログラム

 

public class lengthTest {

    public static void main(String[] args) {
        String 文字列長さ確認 = "文字列456全10字";
        int 文字数 = 文字列長さ確認.length();
        System.out.println(文字数);
    }
}

実行結果

10

④equalsメソッドについて

文字列1.equals(文字列2)

 

equalsサンプルプログラム

サンプルプログラムとしては次のとおりになります。

public class Equals {

    public static void main(String[] args) {
        String str = "文字列";
        String str2 = "文字列";

        if (str.equals(str2)) {
            System.out.println("str.equals(str2)はOK");
        }
    }
}

実行結果

str.equals(str2)はOK

また変数を利用しなくても上記のような組み方もできます。

public class Equals {

    public static void main(String[] args) {
        String str1 = "文字列";

        if (str1.equals("文字列")) {
            System.out.println("str1.equals(\"文字列\")はOK");
        }
    }
}

実行結果

str.equals("文字列")はOK

 

equalsメソッド使用の際の注意点

equalsメソッドは文字列の比較の場合のみ使用できます。そのため、次のようなプログラムを組むことはできません

//intの値と比較しようとした場合
public class Equals {

    public static void main(String[] args) {
        String str1 = "12345";
        int int1 = 12345;

        if (str1.equals(int1)) {
            System.out.println("str.equals(str2)はOK");
        }
    }
}

エラーメッセージ
型 String のメソッド equals(Object) は引数 (int) に適用できません

package study_java;

    public class Equals {

    public static void main(String[] args) {
        String str1 = "true";
        boolean boo1 = true;

        if (str1.equals(boo1)) {
            System.out.println("str.equals(str2)はOK");
        }
    }
}

エラーメッセージ
型 String のメソッド equals(Object) は引数 (boolean) に適用できません

上記結果から文字列の比較の場合のみ使用できることが分かりました。

equalsメソッド使用の際の注意点その2 (== 等価演算子)との違い

int型などの数値の比較には ==等価演算子を活用します。

 ==等価演算子は参照先が同じかどうか。等価演算地String型などの参照型の場合に”==”演算子で比較すると参照先が同じかどうかを比較することになります。

参照先の値を比較する訳ではありません。

数値を比較する場合は ==等価演算子を活用しましょう。

public class Equals2 {

    public static void main(String[] args) {
        int int1 = 12345;
        int int2 = 12345;

        if(int1==int2)
            System.out.println("int1==int2はOK");
    }
}

実行結果

int1==int2はOK

⑤charAt(int) :文字列の指定したインデックスの位置にある文字を取得

charAtメソッドを利用すると文字列の指定したインデックスの位置にある文字を取得することができます。

変数名.charAt(int)

・インデックスは最初の文字が 0 、次の文字が 1 、と先頭から順番に割り当てられています。
例:String  msg = “テスト”;
👉msg.charAt(0) ➡テ
👉msg.charAt(1) ➡ス
👉msg.charAt(2) ➡ト

 

charAtサンプルプログラム

サンプルプログラムとしては次のとおりになります。

public class charAttest {

    public static void main(String[] args) {
        String CharAttest = "文字列から1字抜き出しテスト";
        char 一文字目 = CharAttest.charAt(0);
        char 五文字目 = CharAttest.charAt(4);
        char 十文字目 = CharAttest.charAt(9);
        //1文字目「文」が出力
        System.out.println(一文字目);
        //5文字目「ら」が出力
        System.out.println(五文字目);
        //10文字目「出」が出力
        System.out.println(十文字目);
    }
}

実行結果

文
ら
出
管理人
以下、関連ページになります

プログラミング 

【Java】変数の宣言及び値のセットについてまとめました(基本のデータ型、配列)

Javaのboolean型の活用について【具体的な活用方法も併せて紹介】

【Java】Listの使い方(put、get、size、isEmpty、removeなど)

【Java】Mapの使い方 (put、get、size、isEmpty、clearなど)

コメントを残す

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

PAGE TOP