English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 基础教程

Javaのプロセス制御

Java 配列

Java 面向オブジェクト(I)

Java 面向オブジェクト(II)

Java 面向オブジェクト(III)

Java 異常処理

Java リスト(List)

Java キュー(キュー)

Java Map集合

Java Set集合

Java 入出力(I/O)

Java Reader/Writer

Javaの他のトピック

Java 文字列(String)

このチュートリアルでは、Java Stringの作成方法やそのさまざまなメソッドについて、例を用いて学びます。

 Javaでは、文字列は一連の文字です。例えば、「hello」は「h」、「e」、「l」、「l」、および「o」の文字シーケンスを含む文字列です。

他のプログラミング言語とは異なり、Javaでは文字列は基本型(例えばint、charなど)ではありません。代わりに、すべての文字列は名前がStringのクラスのオブジェクトです。例えば、

//文字列の作成
String type = "java programming";

ここでは、typeという名前の文字列を作成しました。ここでは、"java programming"で文字列を初期化しました。Javaでは、ダブルクォート文字列を表します。

この文字列はStringクラスのインスタンスです。

注意:すべての文字列変数はStringクラスのインスタンスです。

Java文字列メソッド

Java Stringは、さまざまな文字列操作を実行できるように様々なメソッドを提供します。以下は、一般的に使用される文字列メソッドの一部です。

メソッド説明
concat()二つの文字列を結合します
equals()二つの文字列の値を比較します
charAt()指定された位置にある文字を返します
getBytes()文字列をバイト配列に変換します
indexOf()指定された文字の位置を文字列中で返します
length()指定された文字列の大きさを返します
replace()指定された古い文字を指定された新しい文字に置き換えます
substring()指定された文字列の部分文字列を返します
split()文字列を文字列配列に分割します
toLowerCase()文字列を小文字に変換します
toUpperCase()文字列を大文字に変換します
valueOf()指定されたデータの文字列表現を返します

いくつかの例を示しましょう。

例1:Javaで文字列の長さを検索

class Main {
  public static void main(String[] args) {
    //文字列を作成する
    String greet = "Hello! World";
    System.out.println("文字列は: "); + greet);
    //文字列の長さを確認します
    System.out.println("文字の長さ: "); + greet.length());
  }
}

出力結果

文字列は: Hello! World
文字の長さ: 12

上記の例では、greetという名前の文字列を生成しました。ここでは、length()メソッドを使用して文字列の大きさを取得しました。

例2:Javaでconcat()を使用して二つの文字列を結合する

class Main {
  public static void main(String[] args) {
    //文字列を作成する
    String greet = "Hello! ";
    System.out.println("第一の文字列: " + greet);
    String name = "World";
    System.out.println("第二の文字列: " + name);
    //二つの文字列を結合します
    String joinedString = greet.concat(name);
    System.out.println("結合後の文字列: " + joinedString);
  }
}

出力結果

第一の文字列: Hello!
第二の文字列: World
結合後の文字列: Hello! World

上記の例では、2greetとnameという名前の文字列を生成しました。

concat()メソッドを使用して文字列を結合します。したがって、joinedStringという名前の新しい文字列を得ます。

Javaでは、さらに + 演算子を使用して結合します。

例3:+演算子を使用してJavaで文字列を結合する

class Main {
  public static void main(String[] args) {
    //文字列を作成する
    String greet = "Hello! ";
    System.out.println("第一の文字列: " + greet);
    String name = "World";
    System.out.println("第二の文字列: " + name);
    //二つの文字列を結合します
    String joinedString = greet + name;
    System.out.println("結合後の文字列: " + joinedString);
  }
}

出力結果

第一の文字列: Hello!
第二の文字列: World
結合後の文字列: Hello! World

ここでは、+演算子を使用して結合します。

例4:Javaで二つの文字列を比較する

class Main {
  public static void main(String[] args) {
    //文字列sを生成します
    String first = "java programming";
    String second = "java programming";
    String third = "python programming";
    //第一の文字列と第二の文字列を比較します
    boolean result1 = first.equals(second);
    System.out.println("第一と第二の文字列は一致します: " + result1);
    //第一と第三の文字列を比較します
    boolean result2 = first.equals(third);
    System.out.println("第一と第三の文字列は一致します: " + result2);
  }
}

出力結果

第一と第二の文字列は一致します: true
第一と第三の文字列は一致しません: false

上記の例では、equals()メソッドを使用して二つの文字列の値を比較しました。

二つの文字列が同じであれば、このメソッドはtrueを返します。そうでない場合はfalseを返します。

注意:==演算子とcompareTo()メソッドを使用して比較することができます2の文字列。

例5:Javaで文字列から文字を取得する

class Main {
  public static void main(String[] args) {
    //文字列リテラルを使用して文字列を作成します
    String greet = "Hello! World";
    System.out.println("文字列は: "); + greet);
    //を返します3の文字
    System.out.println("位置3の文字: " + greet.charAt(3));
    //を返します7の文字
    System.out.println("位置7の文字: " + greet.charAt(7));
  }
}

出力結果

文字列は: Hello! World
位置3の文字: l
位置7の文字: W

上記の例では、charAt()メソッドを使用して指定された位置の文字にアクセスしました。

例6:Javaの文字列の他のメソッド

class Main {
  public static void main(String[] args) {
    //newキーワードを使用して文字列を作成します
    String example = new String("Hello! World");
    //「World」という部分文字列を返します
    System.out.println("subString(): "); + example.substring(7));
    //文字列を小文字に変換します
    System.out.println("toLowerCase(): "); + example.toLowerCase());
    //文字列を大文字に変換します
    System.out.println("toUpperCase(): "); + example.toUpperCase());
    //文字「!」を「o」に置き換えます
    System.out.println("replace(): "); + example.replace('!', 'o'));
  }
}

出力結果

subString(): World
toLowerCase(): hello! world
toUpperCase(): HELLO! WORLD
replace(): Helloo World

上記の例では、newキーワードを使用して「example」と名付けられた文字列を作成しました。

ここでは、

  • substring() メソッドは「World」という文字列を返します

  • toLowerCase() メソッドは文字列を小文字に変換します

  • toUpperCase() メソッドは文字列を大文字に変換します

  • replace()メソッドを使用して、'!'を'o'に置き換えます。

文字列のエスケープシーケンス

Javaの文字列はダブルクォートを表示します。

//文字列を作成する
String example = "This is a string";

文字列に含めたい場合は、ダブルクォート。例えば、

//文字列にはダブルクォートが含まれています
String example = "This is the "String" class";

これはエラーになります。なぜなら、ダブルクォートを文字列として表現します。したがって、コンパイラはそれを"This is the "として文字列とみなします。

この問題を解決するために、Javaではエスケープシーケンス(\)を使用します。今や文字列に含めることができますダブルクォート、以下のように:

//エスケープシーケンスを使用する
String example = "This is the \"String\" class.";

エスケープシーケンスはコンパイラにエスケープを指示しますダブルクォートそして全体のテキストを読み取ります。

Javaの文字列は不可変です

Javaでは、文字列を作成することはstringクラスのオブジェクトを作成することを意味します。Javaで文字列を作成すると、その文字列を変更することができません。これがJavaで文字列が呼ばれる理由です。不可変な原因。

それをより深く理解するために、例を見てみましょう:

//文字列を作成する
String example = "Hello!";

ここで、文字列オブジェクト"Hello!"を作成します。作成後はそれを変更することができません。

ここで、文字列を変更しようとします。

//この文字列に別の文字列を追加します
example = example.concat(" World");

ここで、先ほどの文字列に新しい文字列を追加しようとしました。

文字列は不可変な、これはエラーが発生するべきですが、これは問題ありません。

今見ると文字列を変更できるようです。しかし、実際にはそうではありません。実際に何が起こっているかを見てみましょう。

私たちは文字列"Hello!"を持っており、それをexampleという名前の変数で参照しています。上記のコードを実行すると、

  • JVMは文字列"Hello!"を受け入れます

  • それに" World"を追加します

  • これにより新しい文字列"Hello! World"が作成されます

  • 変数exampleは新しい文字列を指しています

  • 前の文字列"Hello!"は変更されません

注意:新しい文字列を作成し、変数で参照するたびに。

newキーワードで文字列を作成する

これまで、私たちはJavaで基本データ型に似た文字列を作成してきました。しかし、Javaの文字列はオブジェクトであるため、newキーワードを使用して作成することもできます。例えば、

//newキーワードを使用して文字列を生成する方法
String name = new String("java string");

上記の例では、newキーワードとString()コンストラクタを使用して文字列を生成しました。

Stringクラスは、さまざまな他のコンストラクタを使用して生成された文字列を提供します。

今や文字列の生成プロセスと前のプロセスの違いを見てみましょう。

文字列リテラルとnewキーワードの違い

今や文字列リテラルとnewキーワードを使用して文字列を生成する方法を知ったので、それらの間の主な違いを見てみましょう。

 Javaでは、JVMはすべての文字列をメモリに格納するための文字列プールをメンテナンスします。文字列プールは文字列の再利用を助けます。

 文字列リテラルを使用して文字列を生成する場合、文字列の値が直接提供されます。したがって、コンパイラはまず文字列プールをチェックし、文字列が既存しているかどうかを確認します。

  • 文字列が既存している場合新しい文字列は生成されません。代わりに、新しいリファレンスは既存の文字列を指します。

  • 文字列が存在しない場合新しい文字列が生成されます。

 しかし、newキーワードを使用して文字列を生成する場合、文字列の値が直接提供されません。したがって、新しい文字列は常に生成されます。