Java Puzzle 23 – Operator Overloading

Merhaba Arkadaslar
Su kod icin sonsuz/ infinite olarak calisacak bir “i” degeri ne olabilir ?
Onceki bolumde kullandigimiz Double.NaN disinda bir deger bulmaliyiz.

while (i != i + 0) {

}

Bir sayiya 0 ekledigimizde kendisine esit olacaktir. Peki bu durumda uygun degerimiz ne olacaktir ?
Burada sartlandigimiz nokta i degiskeninin numeric bir deger olmasi , fakat + operatorunu String icin de kullanabiliriz.

+ operatoru overloaded olarak calismaktadir. String type icin toplama islemi degil (addition) , String concatenation islemini gerceklestirecektir.
Eger bir operand String , diger operator numeric bile olsa String concat islemi gerceklesecektir.

package _23.operator.overloading;

public class OperatorOverloading {

	public static void main(String[] args) {

		String i = "Java!";

		while (i != i + 0) {
			System.out.println(" + operator overloading...");
		}
	}
}

i degiskeni “Java” degerine sahip olacaktir ;
i+0 -> “Java0” olacaktir
“Java” != “Java0” true olacaktir bu nedenle sonsuz dongu olur.

+ ve += operatoru icin Java’da String concat isleminde overloaded durumu soz konusudur.

Ornegimizi calistirdigimizda ;

 + operator overloading...
 + operator overloading...
 + operator overloading...
 + operator overloading...
 + operator overloading...
 + operator overloading...
 + operator overloading...
 + operator overloading...
.....

Github kaynak kodlar / Source Code ;
leventerguder/injavawetrust-puzzler

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 *