Javaにおける文字配列と文字列の変換方法

2442 ワード

本文は主にJavaにおけるchar配列(文字配列)と文字列Stringタイプの変換方法について述べる.
実際のアプリケーションでは、入力がcharタイプの配列である場合、または操作結果が文字配列である場合、パスワードマッチングやパスワード付与などの操作を行うためにStringタイプに変換する必要があります.たとえば、「パスワードフィールド」を使用します.「jPasswordFieldコンポーネントはパスワード値を取得します.この場合、charタイプの配列を変換する必要があります.また、文字列をchar配列に変換する場合もあります.
文字列変換文字配列
まず、文字列タイプがchar配列に変換されるのを見てみましょう.コードは以下のコードです.
	String myString = "hello123"; //         myString
	char[] myCharArray; //        myCharArray
	myCharArray = myString.toCharArray(); //             
	for(int i=0; i

結果:
  	h e l l o 1 2 3 

明らかに、変換の過程で文字列の方法toCharArray()が用いられ、文字列「hello 123」を文字配列に変換した.
文字配列を文字列に変換
	char[] str = {'h','e', 'l', 'l', 'o', '  ', '1','2','3'};  //        
	String string1 = new String(str);
	String string2 = String.valueOf(str);
	System.out.println(string1);  //hello 123
	System.out.println(string2);
	System.out.println(string1 == string2);  //false
	System.out.println(string1.equals(string2));  //true

上記のコードでは、char配列を文字列に変換する方法は2つあります.
  • は、文字配列を直接パラメータとしてStringオブジェクトを構築するものであり、
  • .
  • もう1つはStringを使用するvalueOf()メソッドです.この2つのメソッドで得られる文字列は同じですが、上のコードの最後の2つの文:
  • 	System.out.println(string1 == string2);  //false
    	System.out.println(string1.equals(string2));  //true
    

    両者の結果は異なり、string 1==string 2ではアドレスが比較されるため、string 1とstring 2は2つの異なるオブジェクトであり、string 1はnewメソッドによって作成され、string 2はvalueOf()メソッドによって返されるオブジェクトであるため、両者のアドレスが異なり、等式の結果がfalseとなる.
    Stringの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;
        }
    

    Stringのequals()メソッドも文字列を1つずつ文字に分割して1つずつ比較することにより,比較は値でありstring 1.equals(string 2)の結果がtrueであることがわかる.