検索
ホームページJava&#&チュートリアルJava文字列の詳細な説明とサンプルの紹介

1. オブジェクトを作成する

Java プログラムの直接文字列定数の場合、JVM は文字列プールを使用してそれらを保存します。文字列直接定数が初めて使用されるとき、JVM はそれを文字列プールに入れてキャッシュします。通常の状況では、文字列プール内の文字列オブジェクトはガベージ コレクションされません。プログラムで文字列を再度使用する必要がある場合、新しい文字列を再作成することなく、参照変数は文字列内の既存の文字列を直接指すことができます。新しい操作を使用して作成された文字列オブジェクトは文字列プール内のオブジェクトを指しませんが、 intern() メソッドを使用して文字列プール内のオブジェクトを指すことができます。

public class StringDemo1 {
     public static void main(String[] args){
         String str1 ="abc";
         String str2 ="abc";
         String str3 =new String("abc");
         System.out.println(str1==str2);//true
         System.out.println(str1==str3);//false
         }
 }

FAQ

String str3 =new String("abc");

オブジェクトはいくつ作成されますか?
答え: 2 つの

String str ="ab"+"cd";

によって作成されたオブジェクトは何個ありますか?


答え: 1 つ。 「ab」と「cd」は文字列プールに配置される定数です。したがって、abcd 文字列プールが 1 つだけ作成され、文字列 abcd が文字列プールに保存されます。

public class StringDemo1 {
    public static void main(String[] args){
        String str1 ="ab";
        String str2 ="cd";
        String str3 ="ab"+"cd";//创建对象并加入字符串池
        String str4 =str1+str2;
        String str5 =str1+"cd";
        System.out.println(str3==str4);//false
        System.out.println(str3==str5);//false

        }
}

上記のコードからわかるように、テキストを含む引用符で作成された String オブジェクトのみを文字列プールに追加できます。新しいメソッドによって作成された新しいオブジェクトを含む "+" 接続式の場合、それらによって生成された新しいオブジェクトは追加されます。文字列プールには追加されません。


しかし、注意が必要な状況があります:

public class StringDemo1 {
    private final static String str1 ="ab";
    private final static String str2 ="cd";
    public static void main(String[] args){
        String str3 ="ab"+"cd";//创建对象并加入字符串池
        String str4 =str1+str2;
        String str5 =str1+"cd";
        System.out.println(str3==str4);//true
        System.out.println(str3==str5);//true

        }
}

これはなぜでしょうか?その理由は、定数の場合です。その値は固定されているため、コンパイル時に決定できます。


上記のコードを少し変更して、何が起こるかを確認してください。

public class StringDemo1 {
     private final static String str1 ;
     private final static String str2;
     static{
     str1="ab";
     str2="cd";
     }
     public static void main(String[] args){
         String str3 ="ab"+"cd";//创建对象并加入字符串池
         String str4 =str1+str2;
         String str5 =str1+"cd";
         System.out.println(str3==str4);//false
         System.out.println(str3==str5);//false

         }
 }

str1とstr2は定数として定義されていますが、sの値が計算される前にすぐに値が代入され、いつ代入されるか、どのような値が代入されるかは変数なので性質は変数と同じです。実行時にのみ作成できます。


2. Stringメソッド

取得メソッド

•int length()
•char charAt(intindex)は位置に基づいて文字を取得します
•intindexOf(int ch)は文字列内のchを返します 位置
•intindexOf(int ch,int fromIndex) fromIndexで指定された位置から開始して、文字列内の最初に出現するchの位置を取得します
•intindexOf(String str)
•intindexOf(String str,int fromIndex)
•int lastIndexOf(int ch)

判定方法

•boolean contains(String str) 別の判定方法: if(str.index(str)!=-1)
•boolean startingWith( String str )
•boolean opensWith(String str)
•bolean isEmpty(String str)
•booleanquals(String str)
•booleanqualsIgnoreCase(String str);

変換メソッド

•文字配列を文字列に変換する

Constructor

1.String(char[] chs)

2.String(char[] chs, offset, count) は、文字配列の一部を文字列に変換します。

静的メソッド

1.static String copyValueOf(char[] chs)

2.static String copyValueOf(char[] chs,int offset,int count)

3.static String valueOf(char[] )

4.static String valueOf(char[] chs,int offset,int count)

•文字列を文字配列に変換します

char[] toCharArray

•文字配列を文字列に変換します
•文字列をByteに変換しますarray
byte[] toBytes

置換メソッド

String replace(olderStr,newStr)

Cutメソッド

String Split(regex)

部分文字列の取得[カテゴリの編集]

String subString(begin)

String subString( begin,end) には先頭は含まれますが、末尾は含まれません

文字列を大文字と小文字に変換します Android(10)

String toUpperCase()

String toLowerCase()

文字列の両端のスペースを削除します

文字列トリム()

2つの文字列を自然な順序で比較します

int CompareTo(String str)

3.文字列の練習

1. 文字列の反転

public class StringDemo2 {
     public static void main(String[] args){
         String str = "avdkfasjks";
         reverseMethod_1(str);
     }
     public static void reverseMethod_1(String str){
         for(int i=str.length();i>0;i--){
             System.out.print(str.charAt(i-1));
         }
     }
 }

2. 最大の同一部分文字列を取得します

public class StringDemo2 {
    public static void main(String[] args){
        String str1 = "avdkfasjks";
        String str2 = "ewavdrtte";
        System.out.println(commonMaxSubstring(str1, str2));
    }
    public static String commonMaxSubstring(String str1,String str2){
        int len = str1.length();
        String str3 = null;
        outer:
            //i为子串的长度
            for(int i = len;i>0;i--){
                //j为子串的脚标
                for(int j=0;j<len-i+1;j++){
                    str3=str1.substring(j,j+i);
                    if(str2.contains(str3))
                        break outer;

                }
            }
        return str3;
    }
}

以上ですJava 文字列の説明が紹介されています。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター