私のjava Stringに対する理解とソースコードの浅い分析

6204 ワード

要旨:要旨:オリジナル出典:http://www.cnblogs.com/Alandre/泥砂レンガパルプ大工希望転載、要約保留、ありがとうございます!
毎日起きて自分に教えて、自分の目標は“技術+英語と生活”です!
Stringといえば
二.Stringの認識とソースコードの浅い分析
Stringといえば
これも自分が2回目に振り返ってJavaの基礎書をかじったことで、小生は愚かで無知だと思っていた.大神が良い教育があれば、私信を評論することができる.以下は私の見方だ.なぜcharと言うのか、私はここで先に関子を売った.javaではcharはunicodeで符号化されており、16位(2バイト)を占めている.ansi符号化(1バイト)からunicode符号化(2バイト)まで.JavaでUnicodeを使用する理由は、JavaのApplet(ウェブページ)が実行され、Unicodeには中国語、English、Spanish、German、Frenchなど、最も広く含まれているからです.そのため、charはjavaの基本タイプの一つに属し、使用も便利です.
注意:javaでは、charタイプはUTF-16で記述されたコードユニットを符号化する.
二.Stringの認識とソースコードの浅い分析
ここでは、Stringがcharと密接に関連している理由について説明します.java文字列Stringはchar値シーケンス(finalのchar配列)から構成されているためです.ソースコードでは、この点をよく証明しています.
/** The value is used for character storage. */
    private final char value[];
         ,             :
public class Test
{
    \u0070\u0075\u0062\u006C\u0069\u0063 static void main(String\u005B\u005D args)
    {
        System.out.println("this is not PI: \u03C0");
    }
}
実行すると、次の出力が表示されます.
this is not PI: π
 
javaのような誤解しないでください
String name = "Jeff Li";
C言語のchar name[]=「Jeff Li」を考えていると思います.この認識は間違っています.他のchar*ポインタに似ています.
char *name = "Jeff Li";
 
最も一般的で最もよく使われるboolean equals()分析で、ソースコードは以下の通りです.
public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String) anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                            return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }
例(A.equals(B))第一:if(this==anObject)
//thisはAを表し、BオブジェクトがAの参照型変数と2つの変数がスタックに格納されているアドレスを表しているかどうかを判断します(スタック参照と同じ内容です).
第二:if(anObject instanceof String)
//javaのinstanceof演算子は、実行時にオブジェクトが特定のクラスであるかどうかを示すインスタンスです.この文は、String anotherString=(String)anObjectを次のように強く回転させるために使用されます.3つ目は、最初はソースコードに疑問がありました.StringタイプのanotherStringがchar値シーケンス(char[])を取得したと思います.これは前の内容に戻ります.
anotherString.value
大牛に言えるところがあれば、言ってください.私自身が簡単なStringCopyを実現したいとき、これはいつもだめです.なぜか分かりません.
第四:残りはchar[]直接サイクル比較です.
 
よく使われるsplit(正則)formatもありますが、ここでは一つ一つの見方を発表しません.
 
もう一つの良いコード共有がありますorg.apache.commons.langから
public static boolean isEmpty(String str) {
        return str == null || str.length() == 0;
    }
三.知識の出所とまとめに感謝する
Stringはよく使われるもので、よく言われています.自分の考えを見て、みんなで自分の意見を話しましょう.
Stringといえば
二.Stringの認識とソースコードの浅い分析
参考資料:
http://elmer08.blog.163.com/blog/static/71204254201011121382438/
http://blog.csdn.net/sunzhenhua0608/article/details/7628663
http://blog.csdn.net/f562867448/article/details/8679550