Wypisywanie wartości z tablicy typu char

0

Może wytłumaczę to na przykładzie

char[] tab = { 'j', 'a', 'v', 'a'};
		System.out.println(tab);
		System.out.println("powinno byc java: "+tab + "\n\n");

Console:

java

powinno byc

java: [C@37cc1f09

Dlaczego w pierwszym przypadku wypisuje zawartość tablicy, a w drugim referencję do tablicy?

0

http://stackoverflow.com/questions/13505274/java-println-with-char-array-gives-gibberish
Możesz zrobić tak:

System.out.println("Powinno być java " + new String(tab) + "\n\n");
1

Ponieważ metoda println() wywoływana dla instancji obiektu PrintStream, którym jest System.out, ma różne przeciążenia. Jeżeli nie podasz w argumencie typu prymitywnego, typu String, albo char[], to dla każdego argumentu innego typu zostanie wywołana metoda toString().

W praktyce, jeżeli wrzucasz do niej jedynie argument będący typu char[], to wypluje w wyniku tablicę znaków. Jeżeli wrzucasz String'a i zawierasz pomiędzy jego częściami tablicę typu char, to obiekt tab jest wyświetlany jako tab.toString().

Poniżej różne przeciążenia metody println().

println()
println(boolean x)
println(char x)
println(char[] x)
println(double x)
println(float x)
println(int x)
println(long x)
println(Object x)
println(String x)

Dokumentacja:
http://docs.oracle.com/javase/1.5.0/docs/api/java/io/PrintStream.html

0

A moze by tak:

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1