2016-11-22 8 views
6

これは非常に基本的な質問です。しかし、私はそれで非常に混乱しています。正しく私はそれを取得していないなぜCharArrayに文字列を変換する必要があります。私はtoCharArray()メソッドの仕事を知っています。ただ私は、この方法がなぜ必要なのか、リアルタイムの例がほしいです。 私の質問では、また、charArrayとhashcodeの関係を理解し​​たいと思います。文字列をcharArrayに変換する必要はありますか?

私はcharArray表現を知っている:

char[] charArray ={ 'a', 'b', 'c', 'd', 'e' }; 

public class Test { 

public static void main(String args[]){ 
    String a = "bharti"; 
    char[] charArray = a.toCharArray(); 
    System.out.println(charArray); 

} 
} 

出力:バーティ・

私にとってなし差賭けがあります変数に '出力と私の文字列bhartiが' a 'です。

問題の作成元
実際に私は、ハッシュパスワードを生成するコードを書くことにしたいので、私はほとんどtoCharArray()メソッドがit.Soに使用されているがGoogleからのいくつかのコードを読んでいた私は、私たちを取得していませんなぜこれを使っているのですか?

+5

「System.out.println」の観点からは明らかな違いはありません。しかし、特定のAPIでは文字列ではなく配列が必要な場合があります。 –

+1

多分、すべての一意の文字を 'String'に入れたいかもしれません。多分、それを逆にしたいと思います。私は本当にあなたがそれを必要とする十分な例以上のものがあるので、本当に疑問を持っていません。 – SomeJavaGuy

+0

@KevinEsche私はあなたの答えから幾分満足しています。実際に私はちょうど私がこの方法を使用する必要があるいくつかの例がほしいですか?この方法はどこで使用できますか?私はそれが明らかに私の質問に書かれていると思う。 –

答えて

4

Stringからchar[]への変換は、要素の順序で何かを実行する場合に便利です(例:sort())。

文字列が不変であり、操作にはあまり適していません。例えば


abhirtまた、いくつかの方法/クラスが明示的を必要とする:印刷

String original = "bharti"; 
    char[] chars = original.toCharArray(); 
    Arrays.sort(chars); 
    String sorted = new String(chars); 
    System.out.println(sorted); 
入力として、例えば PBEKeySpec

byte[] salt = new byte[16]; 
random.nextBytes(salt); 
KeySpec spec = new PBEKeySpec("password".toCharArray(), salt, 65536, 128); 
SecretKeyFactory f = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); 
byte[] hash = f.generateSecret(spec).getEncoded(… 

原理を使用して、メモリからのchar []の内容を拭くことができることです。詳細については、こちらを参照してください:https://stackoverflow.com/a/8881376/461499

+0

ご返信ありがとうございます。今私はそれを利用している。あなたの答えは役に立ちます。別のケースの例を追加するととても感謝しています。 –

+0

Robau私があなたが与えたPBEKeySpecの例を扱っています。ありがとう。新しいバイト[16]の役割についてここで説明してください。 –

+0

それは塩です。詳細は次のURLを参照してください:http://stackoverflow.com/a/2969871/461499 – RobAu

0

あなたは、たとえば、文字列内の各文字ではなく、文字列全体をチェックしたい場合に便利です:

public boolean hasDigit (String input){ 
    for (char c: input.toCharArray()){ 
     if (Character.isDigit(c)){ 
      return true; 
     } 
    } 
    return false; 
} 

この方法をチェック文字列内の文字のいずれかが数字である場合。

+0

ありがとう@richardK。それはまた有用な答えです。 –

0

文字列とcharArrayの違いがあります。両方のデータが同じ方法で格納されていないことを意味しません。両方ともsame.Stringは不変ですが、charArrayはそうではありません。Stringはchar配列で実装されています。変更するたびに、新しいStringオブジェクトが返されます.Char Araayではなく、不変のプロパティのため、StringはConstantとして動作します。

両方の使用は、お客様のニーズと要件によって異なります。

関連する問題