Java文字列の詳細な説明とサンプルの紹介

黄舟
リリース: 2016-12-19 14:20:51
オリジナル
1340 人が閲覧しました

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 サイト (m.sbmmt.com) に注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!