CodeGym /Java Blog /ランダム /Java 文字列
John Squirrels
レベル 41
San Francisco

Java 文字列

ランダム グループに公開済み

Javaの文字列とは何ですか?

プログラミングでは、文字列がよく使われます。Java の String は、char 配列に基づいた文字のシーケンスを表すオブジェクトです。StringクラスはJava では不変であり、 ComparableSerializable、およびCharSequenceインターフェイスを実装します。理解するために例を見てみましょう。
String str = "string"
ここで、str は s、t、r、i、n、g の 6 文字のシーケンスです。
文字配列インデックス 0 1 2 3 4 5
価値 s t r n g
メモリアドレス 0x12824 0x12825 0x12826 0x12827 0x12828 0x12829
ご存知のとおり、配列は不変です。つまり、初期化後に変更できないため、文字列も不変です。

文字列の初期化の方法

文字列を初期化するには 2 つの方法があります。
  1. 文字列リテラル
  2. 新しいオペレーター

文字列リテラル

上記の例では、文字列を宣言する最も簡単で直接的な方法が使用されています。コンパイラーが文字列リテラルを解釈するときは、必ず String オブジェクトに変換されます。
String str = "string";

新しいオペレーター

new 演算子を使用して文字列を初期化することもできます。
String strNew = new String("using new operator");

import java.io.*;
import java.lang.*;

class StringInitializationExample {
    public static void main(String[] args)
    {
        //declare java string with a string literal
        String str = "a string literal";

        System.out.println("String str = " + str);

        //declare string using new operator
        String strNew = new String("using new operator");

        System.out.println("String strNew = " + strNew);
    }
}

出力

String str = 文字列リテラル String strNew = new 演算子を使用

String 対 StringBuilder 対 StringBuffer

String クラスとは何かについてはすでに説明したので、他の 2 つのクラスとその目的、および Java が既に String クラスを持っているときにこれら 2 つのクラスを導入した理由について説明します。よりよく理解するには、先頭に移動して String クラスを改訂することをお勧めします。

理由

ご存知のとおり、String クラス オブジェクトは不変であるため、文字列を変更する必要がある場合は常に現在のオブジェクトを変更することはありませんが、変更された値は常に新しい String オブジェクトとして保存されます。したがって、値を何度も変更する必要がある場合、メモリも消費されます。この点を維持しながら、Java はStringBuilderクラスとStringBufferクラスを提供します。次に、これらがこのシナリオでどのように役立つかを見ていきます。

文字列バッファ

String は不変の文字シーケンスを表現しますが、StringBufferは変更可能な文字シーケンスです。これは、ほとんどのStringクラス メソッドといくつかの独自のメソッドを使用して、文字の内容と順序を変更します。このメソッドは複数のスレッドで使用できるように同期され、シリアル順序が維持されるため、スレッドセーフです。SerializableAppendable、およびCharSequenceインターフェイスを実装します。

構文

StringBuffer str = new StringBuffer("Happy Java Programming");

文字列ビルダー

StringBuilder は、可変の文字シーケンスも表します。StringBuffer クラスと互換性のある API を提供しますが、スレッドセーフではありません。したがって、複数のスレッドが関与しない場合は、多くの場合StringBufferクラスよりも高速なStringBuilderクラスを使用することをお勧めします。このクラスの主要なメソッドは、挿入と追加です。SerializableAppendable、およびCharSequenceインターフェイスも実装します。

構文

StringBuilder str = new StringBuilder("Happy Java Programming");

文字列操作

Java では、 ConcatenationComparingSplittingFinding LengthReplacing Stringなど の文字列操作を実行できます。

文字列メソッド

Java String クラスは、文字列を操作したり、上で説明した操作を実行したりするためのさまざまなメソッドを提供します。これらの文字列メソッドのいくつかを以下の表で見てみましょう。
メソッド 説明
Char charAt(int インデックス) 指定されたインデックスの char 値を返します。
文字列連結(文字列str) 指定された文字列をこの文字列の末尾に結合して文字列を返します。
ブール値には次のものが含まれます(CharSequence s) 文字列に指定された一連の char 値が含まれている場合は true を返します。
ブール型 contentEquals(CharSequence cs) 指定された文字シーケンスを持つ文字列と一致します。
ブール値 contentEquals(StringBuffer sb) 指定された文字列バッファーと文字列を照合します。
ブール型の e​​ndsWith(文字列接尾辞) 文字列の末尾と指定されたサフィックスを比較します。
ブール値等しい(オブジェクト anObject) 指定されたオブジェクトと文字列を照合します。
ブール値等しいIgnoreCase(String anotherString) このメソッドは、大文字と小文字の区別を考慮せずに 2 つの文字列を比較します。
静的文字列形式(文字列形式、オブジェクト…引数) 指定された形式と引数を使用して、書式設定された文字列を返します。
バイトgetBytes() このメソッドは、プラットフォームのデフォルトの文字セットを使用して文字列をバイト シーケンスにエンコードし、新しいバイト配列に格納します。
void getChars(int begin, int end, char[] dst, int dstBegin) 文字列の文字をコピー先の文字配列にコピーします。
int ハッシュコード() 文字列のハッシュ コードを返します。
int インデックスOf(int ch) 文字列内で最初に出現する指定された文字のインデックスを返します。
int IndexOf(int ch, int fromIndex) この文字列内の指定されたインデックスから開始して最初に出現する指定された文字のインデックスを返します。
intindexOf(文字列str) 文字列内で指定された部分文字列を検索し、最初に見つかった部分文字列のインデックスを返します。
int IndexOf(String str, int fromIndex) 指定されたインデックスから文字列内の指定された部分文字列の検索を開始し、最初に見つかったインデックスを返します。
文字列インターン() このメソッドは、文字列の正規表現を返します。
int lastIndexOf(int ch) このメソッドは、文字列内で指定された文字を検索し、最後に出現した文字のインデックスを返します。
int lastIndexOf(int ch, int fromIndex) このメソッドは、指定されたインデックスから文字列内の指定された文字を逆方向に検索し、最後に出現した文字のインデックスを返します。
int lastIndexOf(String str) このメソッドは、文字列内で指定された部分文字列を検索し、最後に出現した部分文字列のインデックスを返します。
int lastIndexOf(String str, int fromIndex) このメソッドは、指定されたインデックスから文字列内の指定された部分文字列を逆方向に検索し、最後に出現した部分文字列のインデックスを返します。
int の長さ() このメソッドは文字列の長さを返します。
ブール値の一致(文字列正規表現) 指定された正規表現と文字列を照合することにより、true または false を返します。
文字列置換(char oldValue, char newValue) このメソッドは、指定されたすべての oldValue を文字列内の newValue に置き換えた後、文字列を返します。
String[] 分割(文字列正規表現) このメソッドは、文字列内で指定された正規表現に従ってすべての一致を検索し、これらの一致を中心に分割します。
ブール値でstartsWith(文字列プレフィックス) 指定されたプレフィックスで始まる文字列をテストすることにより、true または false を返します。
文字列の部分文字列(int beginIndex) このメソッドは、この文字列の部分文字列である文字列を返します。
文字列をLowerCase()に変換 デフォルトのロケールの規則を使用して、文字列のすべての文字を小文字に変換します。
文字列トリム() このメソッドは、文字列から先頭と末尾の空白をすべて削除して返します。
静的 String valueOf(char c) char 引数の文字列表現を返します。
次に、いくつかの例を使用して、それらの使用方法を見ていきます。

import java.io.*;
import java.lang.*;

class JavaStringsExample {
  public static void main(String[] args) {

    //create a string
    String greeting = "Hello! World";
    System.out.println("String: " + greeting);

    //getting the length of greeting object
    int length = greeting.length();
    System.out.println("Length: " + length);

    //create first string
    String first = "Java ";
    System.out.println("First String: " + first);

    //create second string
    String second = "Programming";
    System.out.println("Second String: " + second);

    //joining two strings
    String joinedString = first.concat(second);
    System.out.println("Joined String: " + joinedString);

    String jpf = "Java programming";
    String jps = "Java programming";
    String jpt = "Python programming";

    //compare jpf and jps strings
    boolean result1 = jpf.equals(jps);
    System.out.println("Strings jpf and jps are equal: " + result1);

    //compare jpf and jpt strings
    boolean result2 = jpf.equals(jpt);
    System.out.println("Strings jpf and jpt are equal: " + result2);

    //converting jpf to uppercase
    System.out.println("Upper case jpf: " + jpf.toUpperCase());

    //replacing g character with v in jpf
    System.out.println("Replacing g with v in jpf: "+jpf.replace("g", "v"));
  }
}

出力

文字列: こんにちは! 世界の長さ: 12 最初の文字列: Java 2 番目の文字列: プログラミング 結合された文字列: Java プログラミング文字列 jpf と jps が等しい: true 文字列 jpf と jpt が等しい: false 大文字の jpf: JAVA PROGRAMMING jpf の g を v に置き換える: java provramminv

結論

Java の文字列とは何か、そのクラス、およびそのさまざまなメソッドを実装する方法を理解できたと思います。気軽に練習して、さらにサポートが必要なときにいつでも戻ってください。楽しく学習しましょう!
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION