Pure Java – 39 Operators – 01

Merhaba Arkadaslar,
Bu yazi ile birlikte Pure Java yazilarimin 4.bolume giris yapacagiz. Bir kac yazida Javadaki Operatorleri inceleyecegiz. Bir cogunu kullandik fakat burada toplu olarak inceleyecegiz.
4.bolum diger bolumlerden cok daha kisa olacak.

Konu basliklarimiz ;

  • Assignment Operator(Atama Operatoru)
  • Compound Assignment Operators(Birlesik Atama Operatorleri)
  • Equality & Relational Operators(Iliskisel Operatorler)
  • Type Comparison Operator ( Tip Karsilastirma Operatoru)
  • Arithmetic Operators(Arimetik Operatorler)
  • Conditional Operators(Kosullu Operatorler)
  • Bitwise Operators(Bitsel Operatorler)
  • Logical Operators(Mantiksal Operatorler)

Assignment Operators(Atama Operatoru)
Java ‘da Atama Operatoru bildigiz gibi esittir (=) operatorudur. Atama Operatorlerinde dikkat etmemiz gereken konulari onceki yazilarda islemistik, explicit(acik) casting isleminde deger kaybi gibi.

public class OperatorTest {
	public static void main(String[] args) {
		int i=257;
		byte b=(byte)i;
		System.out.println(b);  //1
	}
}

Onceki yazilarda degisken kavrami ve degiskenlerin birbirine atama isleminin ve deger atama isleminin ne anlama geldiginden bahsetmistik.

Compound Assignment Operators(Birlesik Atama Operatoru)
Java’da 11 tane  Compound Assignment Operator bulunmaktadir.

+=	-=	*=	/=	%=	&=	|=	^=	<<=	>>=	>>>=

Compound(Birlesik) Operatorlere dari bir kac ornek kod ;

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

		int y = 10;
		y -= 5; // y = y - 5;
		y += 20; // y=y+20;
		y *= 4; // y=y*4;
		y /=25; //y=y/25;

		System.out.println(y);  //4

		int x = 3;

		x *=2+5;
       //	x = x + 2 * 5;  yanlis
       //  x=x *(2+5);   dogru
	  // Compound Operatoru kullanirken dikkat etmemiz gereken bir nokta.

	}
}


Equality & Relational Operators(Iliskisel Operatorler)

Java da 6 tane relational(iliskisel) operator bulunur. Bunlari bol miktarda kullanmaktayiz.

< <= > >= == !=
class RelationalOperatorTest{

    public static void main(String[] args){
        int value1 = 1;
        int value2 = 2;
        if(value1 == value2)
            System.out.println("value1 == value2");
        if(value1 != value2)
            System.out.println("value1 != value2");
        if(value1 > value2)
            System.out.println("value1 > value2");
        if(value1 < value2)
            System.out.println("value1 < value2");
        if(value1 <= value2)
            System.out.println("value1 <= value2");
    }
}


Equality Operator

Java ‘da 2 relational operatore “equality operator” de denilir. Bunlar ;

==
!=

Her compare/karsilastirma islemi birbiriyle uyumlu olan tipler olmalidir. Imcompatible(farkli/uyumsuz) tiplerde karsilastirma yapilamaz. Ilkel tipleri karsilastirabildigimiz gibi referans tipleri de karsilastirabiliriz.

Ilkel tipler icin karsilastirma ornegimiz ;

class ComparePrimitives {
	public static void main(String[] args) {
		System.out.println("char 'a' == 'a'? " + ('a' == 'a'));
		System.out.println("char 'a' == 'b'? " + ('a' == 'b'));
		System.out.println("5 != 6? " + (5 != 6));
		System.out.println("5.0 == 5L? " + (5.0 == 5L));
		System.out.println("true == false? " + (true == false));
	}
}

== operatorunu kullanirken dikkat edelim , yanlislikla = operatorunu kullanirsak yanlis sonuc ortaya cikacaktir.  Bazi durumlarda ise compile/derleme hatasina neden olur.

public class Test {

	public static void main(String[] args) {
		boolean b=false;
		if(b=true){  // == yerine = yanlis kullanildiginda
			System.out.println("b is false");
		}

		int x=1;
		// if(x=1) {}  // compile error

		if(x==1) {} // boolean olmali

	}
}

Primitive(ilkel) tipler arasinda ==  operatorunu kullanabildigimiz gibi referans tipler icin de == operatorunu kullanabiliriz. Referans tipler icin karsilastirma ornegimiz;

public class CompareReference {
	public static void main(String[] args)  {
		StringBuilder sb = new StringBuilder("levent");
		StringBuilder sb2 = new StringBuilder("levent");
		StringBuilder sb3=sb;

		System.out.println("sb==sb2 ?"+(sb==sb2));
		System.out.println("sb==sb3 ?"+(sb==sb3));
		System.out.println("sb2==sb3 ?"+(sb2==sb3));
		System.out.println("sb2!=sb3 ?"+(sb2!=sb3));
	}
}

StringBuilder i ilerleyen yazilarda inceleyecegiz. Burada onemli olan nokta sb, sb2,sb3 primitive degil referans tipinde degiskenlerdir. Onceki yazilarda degisken nedir ,primitive ve referans tipteki degiskenleri bir degiskeni bir degiskene atamanin ne anlama geldigini incelemistik.

== operatoru 2 objeyi “meaningfully equivalent/anlamsal olarak esitlik/icerik olarak” test etme islemini yapmaz. Bu testi equals metodu yapar. Bu metodu ve == operatorunu ilerleyen yazilarda detaylica tekrar inceleyecegiz.

== operatorunu Enum’lar icin de kullanabiliriz. Ornek kodumuz ;

class EnumEqual {
	enum Color {
		RED, BLUE
	};

	public static void main(String[] args) {
		Color c1 = Color.RED;
		Color c2 = Color.RED;
		if (c1 == c2) {
			System.out.println("==");
		}
	}
}

Yazimi burada sonlandiriyorum.

Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
OCP, Java SE 6 Programmer
injavawetrust

Print Friendly, PDF & Email

Leave a Reply

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