Merhaba arkadaşlar bu yazımda Java programlama dilinde kullanılan operatörleri anlatmaya çalışacagım.
Operatör bütün programlama dillerinde bulunan ve programlar da kullanılan degişkenler ve nesnelerin
degerleri üzerinde çeşitli degişiklikler yapabilmek için kullanılan
elemanlardır.Yapacagımız işlem operatörle gerçekleşiyorsa “en hızlı ve verimli” ancak bu şekilde yapılır diyebiliriz.
NOT : Yapacagımız işlemler yalnızca bir operatör ile
gerçekleşmiyorsa ya bir grup operatörün biraraya getirilmesiyle ya da o
işlemi gerçekleştirecek method yazılmasıyla işlemi gerçekleştiririz.
Javada’ki operatörleri yaptıkları işe göre aşagıda ki gibi sınıflandırabiliriz ;
- Atama operatörü(=)
- Aritmetik operatörler(+ , – , * , / , %)
- Aritmetik artırma ve eksiltme operatörleri(++ , –)
- Aritmetik atama operatörleri(+= ,-= , *- , /= , %=)
- İlişkisel operatörler(< , > , >= ,<= , == , !=)
- Mantıksal operatörler(AND,OR,XOR,NOT)
- Bit tabanlı(Bitwise) operatörler(& , | , ^ , ~ , << , >>)
- ?: operatörü
Operatörler üzerinde işlem yaptıkları degişken/sabit sayısına göre
bir adet degişkene ihtiyaç duyan operatörlere tekli operatör(unary
operator), iki adet degişkene ihtiyaç duyan operatörlere ikili
operatör(binary operator) ve üç adet degişkene ihtiyaç duyan
operatörlere(?:) üçlü operatör denilir.
1.Atama Operatörü(=)
Bu operatör degişkene deger atamamıza yarayan operatördür.
int sayi = 32 ; int sayi1 = sayı ; String ifade = “Mustafa” ;
2.Aritmetik operatörler(+ , – , * , / , %)
Bu operatörler kesirli ve tam sayılar için işlemler yapan operatörlerdir.
NOT : + ve – operatörü aynı zamanda sayısal tipde ki verileri karakter tipe çevirir.Örnegin ;
int a = 5; System.out.println(a+”7″);
a.)Toplama Operatörü(+) : Sagında ve solunda bulunan 2 degişkeni toplar.
int sayi = 5+7 ;
b.)Çıkartma Operatörü(-) : Sagında ve solunda bulunan 2 degişkenin farkını hesaplar
int sayi = 15-7 ;
c.)Çarpma Operatörü(*) : Sagında ve solunda bulunan 2 degişkenin çarpımını bulur.
int sayi = 5*7 ;
d.)Bölme Operatörü(/) : Sagdaki degişkeni soldaki degişkene böler ve bölümü verir.
int sayi1 = 45 ; int sayi2 = 3 ; double sayi3 = sayi1/sayi2 ;
e.)Mod Operatörü(%) : Sagdaki degişkeni soldaki degişkene böler ve kalanını verir.
float sayi = 45.5f; int sayi1 = 2; float sayi2 = sayi % sayi1;
3.Aritmetik artırma ve eksiltme operatörleri(++ , –)
Bu operatörler uygulandıgı degişkenin degerini 1 artırır ya da 1
azaltır ve aynı zamanda bu operatörler uygulandıgı degişkenin sagında ve
solunda olabilirler.
a.)Artırma Operatörleri(++): Uygulandıgı degişkenin degerini 1 artırır.
int sayi = 2 ; sayi++ ; ++sayi ;
b.)Eksiltme Operatörleri(- -): Uygulandıgı degişkenin degerini 1 azaltır.
int sayi = 2 ; sayi-– ; --sayi ;
NOT : ++sayi ile sayi++ arasında ki temel fark birinci ifadede önce bir artırılır sonra işlemi yapar,ikinci ifadede önce işlemi yapar sonra bir artırır.Aynı durum – -sayi ile sayi- – için de geçerlidir.
int sayi1 = 5 ; int sayi2 = sayi1++ ; System.out.println(sayi2); int sayi3 = 5 ; int sayi4 =++sayi3 ; System.out.println(sayi4);
4.Aritmetik atama operatörleri(+= ,-= , *- , /= , %=)
Bu operatörler degişkenlere deger atama ve aritmetik işlemlerin tek bir defada yapılmasını saglar.
a.)Topla ve Ata Operatörü(+=) : Solunda ki degişkenin degerini sagında ki degişkenin degeri kadar artırır ve sonucu atar.
int sayi1 = 45; int sayi2 = 25; sayi1 += sayi2; //Sonuç = 70
b.)Çıkart ve Ata Operatörü(-=) : Solunda ki degişkenin degerini sagında ki degişkenin degeri kadar artırır ve sonucu atar.
int sayi1 = 45; int sayi2 = 25; sayi1 -= sayi2; //Sonuç = 20
c.)Çarp ve Ata Operatörü(*=) : Solunda ki degişkenin degerini sagında ki degişkenin degeri kadar artırır ve sonucu atar.
int sayi1 = 5; int sayi2 = 2; sayi1 *= sayi2; //Sonuç = 10
d.)Böl ve Ata Operatörü(/=) : Solunda ki degişkenin degerini sagında ki degişkenin degeri kadar artırır ve sonucu atar.
int sayi1 = 45; int sayi2 = 5; sayi1 /= sayi2; //Sonuç = 9
e.)Mod ve Ata Operatörü(%=) : Solunda ki degişkenin degerini sagında ki degişkenin degeri kadar artırır ve sonucu atar.
int sayi1 = 45; int sayi2 = 25; sayi1 %=sayi2; //Sonuç = 20
5.İlişkisel operatörler(< , > , >= ,<= , == , !=)
Bu operatörler true veya false döndürür daha çok koşullarda kullanırız.Örnek üzerinden gösterecek olursak ;
System.out.println(7 > 6); //Sonuç = true System.out.println(7 < 6); //Sonuç = false System.out.println(7 >= 6); //Sonuç = true System.out.println(7 <= 6); //Sonuç = false System.out.println(7 == 6); //Sonuç = false System.out.println(7 != 6); //Sonuç = true
6.Mantıksal operatörler(AND,OR,XOR,NOT)
Mantıksal operatörler birden çok karşılaştırma işlemini birleştirip tek bir koşul ifadesi haline getirmek için kullanılır.
X | Y | Not X(!X) | Not Y(!Y) | X AND Y | X OR Y | X XOR Y |
false | false | true | true | false | false | false |
false | true | true | false | false | true | true |
true | false | true | true | false | true | true |
true | true | true | false | true | true | false |
NOT : Mantıksal operatörlerden &&(AND) ,
||(OR) operatörleri tek karakter(& , |) olarak da kullanılabilir.
Aralarında ki tek fark ise tek karakterli operatörlerin her iki yanında
ki koşulları kesinlikle yoklamasıdır ama çift karakterli işleme soldan başlanılır ve tüm ifade bitmeden kesin sonuca ulaşılırsa ifadenin geri kalan kısmı göz ardı
edilebilir.Örnegin AND işleminde sol taraf yanlış ise sonuç kesin
yanlış olacaktır çift karakterli(&&) operatör kullanırsak burada
ilk koşulumuz uymadıgı için ikinci koşulumuza bakılmaz ama tek
karakterli(&) operatör kullanırsak birinci koşul yanlış olsada
ikinci koşul da yoklanılır.
a.)AND Operatörü : Bu operatör &&
veya & ifadeleri ile kullanılabilir.Bu operatörü kullanırsak
sagında ki ve solunda ki iki koşulda dogru olmalıdır.
b.)OR Operatörü : Bu operatör | | veya |
ifadeleri ile kullanılabilir.Bu operatörü kullanırsak sagında ki ve
solunda ki iki koşuldan birisinin dogru olması yeterlidir.
c.)NOT Operatörü : Bu operatör ! ifadesi ile kullanılabilir.Bu operatörkendisinden sonra gelen mantıksal ifadenin degilini alır.
d.)XOR Operatörü :Her iki ifade dogru veya yanlış ise false birisi dogru birisi yanlış ise true döner
int sayi1=10; int sayi2=5; boolean c=true; a > b && b > 2 ; //Sonuç = true a > b & b > 2; //Sonuç = true a > b && b > 7; //Sonuç = false a > b || b > 7; //Sonuç = true b > a || b > 2 ; //Sonuç = true a > b ^ b > 2 ; //Sonuç = false a > b ^ b > 7 ; //Sonuç = true b > a ^ b > 2; //Sonuç = true b > a ^ b > 7; //Sonuç = false System.out.println(!c); //Sonuç = false
7.Bit tabanlı(Bitwise) operatörler(& , | , ^ , ~ , << , >>)
Bu operatörler uygulandıkları degişkenleri ikilik tabana çevirip karşılık gelen bitler üzerinde işlem yapan operatörlerdir.
a.)And Operatörü(&) : Bu operatör sagında ki ve solunda ki degerleri 2’lik sayı sistemine çevirir ve AND işlemini yapar,sonucuda dönderir.
int sayi1 = 4; //0000 0100 int sayi2 =7; //0000 0111 int sonuc = sayi1 & sayi2; //0000 0100 –>;sonuç = 4
b.)Or Operatörü(|) : Bu operatör sagında ki ve solunda ki degerleri 2’lik sayı sistemine çevirir ve OR işlemini yapar,sonucuda dönderir.
int sayi1 =4; //0000 0100 int sayi2 =7; //0000 0111 int sonuc = sayi1 | sayi2; //0000 0111 –>sonuç = 7
c.)Xor Operatörü(^) : Bu operatör sagında ki ve solunda ki degerleri 2’lik sayı sistemine çevirir ve XOR işlemini yapar,sonucuda dönderir.
int sayi1 =4; //0000 0100 int sayi2 =7; //0000 0111 int sonuc = sayi1 | sayi2; //0000 0011 –>sonuç = 3
d.) Tamamlama(Complement) Operatörü (~) : Bu
operatör sagında ki ve solunda ki degerleri 2’lik sayı sistemine çevirir
ve biti 0 olanı 1 yapar,1olanı da 0 yapar ve sonucuda dönderir.
int sayi1 = 4; System.out.println(~sayi1);
e.)Bit Tabanlı Kaydırma Operatörü(<<,>>) : Bu operatör sagında ki ve solunda ki degerleri 2’lik sayı sistemine çevirir ve istenildigi kadarıyla saga veya sola kaydırılır.
int sayi1 = 4; //0000 0100 System.out.println(sayi1 >> 1); // 0000 0010 –>sonuç = 2 System.out.println(sayi1 << 4); //0100 0000 –>sonuç = 64
8. ?: Operatörü
Java programlam dilinde 3 argüman alan tek operatördür ve bir degişkene şartlı atama yapılamsını saglar.
int sayi1 = 15; int sayi2 = 10; int sayi3 = 30; int sayi4 = 20; int sayi5 = sayi1 > sayi2 ? sayi3 : sayi4; /* sayi1 sayi2’den büyükse sayi3’ü,degilse sayi4’ü sayi5’e ata Sonuç = 30 */ int sayi6 = sayi1 < sayi2 ? sayi3 : sayi4; /* sayi1 sayi2’den küçükse sayi3’ü,degilse sayi4’ü sayi5’e ata Sonuç = 20 */
OPERATÖR ÖNCELİGİ
Eger bir işlemimizde ya da bir methodumuz da birden fazla operatör
kullandıysak bunların bir çalışma sırası vardır aslında bu çalışma
sırası Matematikdekinin aynısıdır.Şimdi biz çalışma önceligi en baştan
en aşagı dogru olanları sıralayacak olursak en başta parantezler
çalışır.
Açıklama | Operatör | Öncelik | Okunuş |
Parantez | ( ) | 11 | Soldan Saga |
Sonra artırSonra eksiltNokta |
++ – . |
10 | Sagdan Sola |
Önce ArtırÖnce EksiltTekil Operatörler |
++ – ! – |
9 | Soldan Saga |
Tip AtamaNesne Oluşturma | (type)
new |
8 | Soldan Saga |
Çarpma-Bölme | */% | 7 | Soldan Saga |
Toplama-ÇıkarmaString Toplama |
+ – + |
6 | Soldan Saga |
İlişkisel Operatörler |
< <= > => |
5 | Soldan Saga |
Eşitlik İnceleme |
== != |
4 | Soldan Saga |
Mantıksal XOR | ^ | 3 | Soldan Saga |
Mantıksal AND | && | 2 | Soldan Saga |
Mantıksal OR | || | 1 | Soldan Saga |
Atama Operatörleri | = | 0 | Sagdan Sola |
Önceligi en yüksek olan operatör ilk çalışacak operatördür.
Yazar : Mustafa Bektaş Tepe
Java && Oracle
Ocak 31st, 2017 on 16:35
Merhaba, ~ operatörünün çıktısı yok programda denedim 10 sayısı için -11 döndürüyor bu saçma değil mi? Hem byte hem de int olarak denedim sonuçta değişme olmadı.