2016-04-30 13 views
0

Я хотел создать массив символов алфавита. Я смотрел на это сообщение:Строковый литерал с toCharArray(), производящий мусор в Java

Better way to generate array of all letters in the alphabet

, который сказал, что это:

char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray();

Так что в моем коде у меня есть:

public class Alphabet { 

private char[] letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray(); 

public String availableLetters(){ 

    return letters.toString(); 
    } 

} 

Когда я вызываю функцию availableLetters() от main() и printit до консоли, выводится этот мусор:

[[email protected]

Что я делаю неправильно?

+0

мусор (Java), производящий мусор. Это называется производительным мусором. –

+0

Извините. Я просто новичок – Deersfeet

+0

Не нужно извиняться, это правильный вопрос. – sbhatla

ответ

-1

Вы можете передать char к конструктору String или статическому методу String.valueOf() и верните это вместо этого.

5

Массив правильный, проблема в том, что вы не печатаете его правильно.

Если вы напечатать массив один символ за один раз, вы получите правильный результат:

for (char c : letters) { 
    System.out.print("'" + c + "' "); 
} 

demo

К сожалению, библиотека стандартных классов Java не обеспечивает содержательное переопределение toString() для массивов , вызывая массу проблем для программистов, которые не знакомы с языком.

3

Если вы хотите напечатать его в виде массива, а затем использовать:

System.out.println(Arrays.toString(letters)); 

BTW: [[email protected] это на самом деле не мусор. Это то, что распечатывается, когда класс не переопределяет метод toString().

От Object.toString():

Возвращает строковое представление объекта. В общем случае метод toString возвращает строку, которая «текстово представляет» этот объект . Результат должен быть кратким, но информативным представлением , которое легко прочитать человеку. Рекомендуется, чтобы все подклассы переопределили этот метод. Метод toString для класса Object возвращает строку, состоящую из имени класса, из которого объект является экземпляром, символом at-sign `@ 'и шестнадцатеричным представлением хэш-кода объекта без знака . Другими словами, этот метод возвращает строку, равную значению:.

GetClass() GetName() + '@' + Integer.toHexString (хэш-код())

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

  • Нет связанных вопросов^_^