7

I know this the very basic question. But i am very confused in it. Properly i am not getting that why we need to convert a String to CharArray. I know the work of toCharArray() method. Only i want some real time example that why we need this method. In my question i want also understand the relation of charArray with hashcode.

I know charArray representation:

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

Example

public class Test {

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

} 
}

Output: bharti

For me there is no difference between output and my string bharti in variable 'a'.

Problem creation source :
Actually i want to writing a code to generate a hash password so i was reading some code from google there mostly toCharArray() method is used in it.So i didn't get we why are using this.

8
  • 5
    From the point of view of System.out.println there is no apparent difference. But certain APIs may require an array rather than a String. Commented Nov 22, 2016 at 7:37
  • 1
    maybe you want all the unique characters in a String, maybe you want to reverse it and though loop over each char. All in all i don´t really get the question as there are more than enough examples where you´d need it. Commented Nov 22, 2016 at 7:38
  • 1
    It really depends on what you are trying to do. Maybe you want to manipulate the chars, remove some, add some more, stream them, there really are infinite reasons why you may want a char array. When using System.out.println you are really just calling toString on the char array. Commented Nov 22, 2016 at 7:45
  • 2
    Possible duplicate of Why is char[] preferred over String for passwords in Java? Commented Nov 22, 2016 at 7:48
  • 1
    are you looking for examples for chararray like you said in comments if you add more example for another case or you want to understand the relation of chararray with hashcode Commented Nov 22, 2016 at 7:53

3 Answers 3

5

Converting from String to char[] is useful if you want to do something with the order of the elements, for example sort() them.

String is immutable and not very suited for manipulation.

For example:

    String original = "bharti";
    char[] chars = original.toCharArray();
    Arrays.sort(chars);
    String sorted = new String(chars);
    System.out.println(sorted);

which prints:

abhirt


Also, some methods/classes explicitly require a char[] as input, for example 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(…

The rationale is that you can wipe the char[] contents from memory. See more information here: https://stackoverflow.com/a/8881376/461499

Sign up to request clarification or add additional context in comments.

3 Comments

thanks for your reply. Now i m got use of it. Your answer is helpful. It will be so thankful if you add more example for another case.
Robau i m working on PBEKeySpec example which you given. Thanks for it. Only please explain here the role of new byte[16] ??
That is a salt. Read this for more information: stackoverflow.com/a/2969871/461499
1

It's useful if you want to check each character inside String, not the whole String, for example:

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

This method checks if one of characters inside String is a digit.

1 Comment

Thanks @richardK. It is also helpfull answer.
0

There is a difference between String and charArray.In both of them data is stored in same way it doesnt mean both are same.String is immutable while charArray is not.String is implemented with a char array and each time you try to modify it it gives you a new String object.String behave as Constant due to its immutable properties while Char Araay not.

The use of both depend upon your need and requirement.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.