Java Puzzle 11 – Char Array

Merhaba Arkadaslar,
Character Based puzzle orneklerimize devam ediyoruz ;
Ornek kodumuzu inceleyelim ;

package _11.char$.array;

public class CharArrayExample {
	public static void main(String[] args) {

		char[] numbers = { '1', '2', '3' };
		System.out.println(numbers);

		System.out.println("Java " + numbers);
	}
}

Kodumuzu calistirdigimizda ciktimiz suna benzer sekilde olacaktir.

123
Java [C@659e0bfd

Burada 1. System.out.println metodu bekledigimiz gibi calismaktadir , peki 2. System.out.println metodunda neden C@659e0bfd seklinde bir cikti vermektedir ?
1. println metodu icin overloaded su metot calismaktadir ;

PrintStream.class

    public void println(char x[]) {
        synchronized (this) {
            print(x);
            newLine();
        }
    }

2.println metodu icin su overloaded metot calismaktadir ;

PrintStream.class

    public void println(String x) {
        synchronized (this) {
            print(x);
            newLine();
        }
    }

eger reference null degere sahipse bu durumda String literali “null” degerine sahip olur. Bunun disinda toString metodu cagrilir. toString metodu override edilmezse reference variable icin java.lang.Object sinifinda yer alan toString metodu cagrilir.

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

Cozum olarak 2 yaklasim kullanabiliriz ;

1.yaklasim olarak String.valueOf metodunu kullanabiliriz.

	System.out.println("Java " + String.valueOf(numbers));

2.yaklasim olarak char[] overloaded metodu cagirmak icin su sekilde ayirabiliriz ;

		
	System.out.print("Java ");
	System.out.println(numbers);

Burada onemli nokta dogru overloaded metodun cagrilmasidir ;

	Object numbers2 = new char[]{ '1', '2', '3' };
	System.out.println(numbers2);

Bu System.out.println metodu icin [C@2a139a55 tarzinda bir cikti olacaktir , bunun nedeni println(Object x) metodu cagrilacaktir.

PrintStream.class

    public void println(Object x) {
        String s = String.valueOf(x);
        synchronized (this) {
            print(s);
            newLine();
        }
    }

Yazimi burada sonlandiriyorum.
Herkese bol Javali gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
OCP, Java SE 6 Programmer
OCE, Java EE 6 Web Component Developer

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *