2016-11-22 4 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); 

} 
} 

Выход: Бхарти

Для меня нет нетразница ставок weenВыход и моя строка bharti в переменной 'a'.

источник создания Проблемы:
На самом деле я хочу писать код для генерации хэша пароля, так что я читал код от Google есть в основном метод toCharArray() используется в it.So я не получил мы почему это используется.

+5

С точки зрения 'System.out.println' нет очевидной разницы. Но для некоторых API может потребоваться массив, а не String. –

+1

Возможно, вам нужны все уникальные символы в 'String', возможно, вы хотите отменить его и, тем не менее, перебрать все символы' char'. В общем, я действительно не задаю вопрос, поскольку примеров, где вам понадобится, будет более чем достаточно. – SomeJavaGuy

+0

@KevinEsche Я немного доволен вашим ответом. На самом деле мне нужны только некоторые примеры, почему мне нужно использовать этот метод? Где я могу использовать этот метод? Я думаю, что это ясно написано в моем вопросе. –

ответ

4

Преобразование из String в char[] полезно, если вы хотите что-то сделать с порядком элементов, например sort().

Строка неизменяемая и не подходит для манипуляций.

Например:

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

, который печатает:

abhirt


Кроме того, некоторые методы/классы явно требуютв качестве входных данных, например 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(… 

Смысл заключается в том, что вы можете стереть полукокса [] содержимое из памяти. См. Дополнительную информацию здесь: https://stackoverflow.com/a/8881376/461499

+0

Спасибо за ваш ответ. Теперь я его использовал. Ваш ответ полезен. Это будет так благодарно, если вы добавите еще пример для другого случая. –

+0

Robau i m работает над примером PBEKeySpec, который вы указали. Спасибо за это. Только объясните здесь роль нового байта [16] ?? –

+0

Это соль. Прочтите это для получения дополнительной информации: 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

Существует различие между String и charArray. В обоих случаях данные хранятся одинаково, но это не значит, что оба они одинаковы. String неизменен, а charArray - нет.String реализуется с массивом char, и каждый раз, когда вы пытаетесь его модифицировать, он дает вам новый объект String.String ведет себя как константа из-за своих неизменных свойств, в то время как Char Araay нет.

Использование обоих зависит от ваших потребностей и требований.

Смежные вопросы