Java Programlama Dilinde Operatörlerin Kullanımı
= operatoru
Bilinen en genel operatörlerden olan eşitlik operatörü çift taraflı kullanılır. Sağ tarafında yer alan değeri sol taraftaki değişkene atamaya yaramaktadır. Daha önce yaptığımız IsimGir isimli örnekte s3 ve s4’de de olduğu gibi, bazen metodlardan gelen değerleri de değişkenlere aktarmaya yarar. Aslında mantık hep aynıdır. Sağdaki değer soldaki değişkene aktarılır. Bu operatör kullanıldıgında, ilk once sağ taraf hesaplanmaktadır.
+, -, *, / operatorleri:
Bu operatörler klasik matematik işlemlerinin hesabında kullanılmaktadır. Ancak istisna olarak + operatorünün daha önce de gördüğümüz IsimGir örneğindeki s5’de olduğu gibi Stringleri birbirleri ile ya da String ve değişkenleri birbirleri ile bağlamak gibi işlemlerde de kullanılması mümkündür.
+=, -= /= ve *= operatörleri:
Bu operatörler birleşik operatörlerdir. Genellikle bir değişkenin değerini eski değeri ve yeni bir sabit artımının toplamı, farkı, bölümü veya çarpımı şeklinde değiştirmek için kullanılır.
Örnegin:
int x = 10;
x = x + 4;
işleminde x değişkeninin son değeri 14 olacaktır. Bu işlem aynı şekilde += operatoru kullanılarak da yapılabilir.Şöyle ki:
int x = 10, sayi = 6;
x += 4; //x = x + 4 ile aynı anlamdadır.
sayi = sayi – 6; //sayi -= 6;
++ ve –- operatorleri:
Bu operatorlerin her ikisi de tamamen aynı mantıkta olup verinin değerini 1 artırmak ya da1 eksiltmek amacıyla kullanılır. Ornegin x = x +1; yazmak yerine x++; yazabilirsiniz. Aynı şekilde x = x -1; yazmak yerine x–; yazabilirsiniz.
boolean Operatörleri :
Daha önce de belirttiğimiz gibi eğer bir değişken boolean türünde ise alabileceği sadece iki tane değer vardır. Bu değerler “true” ya da “false” değerleridir. Bu iki değeri bilgisayar mantığında 1 ya da 0 a benzetebiliriz.
Bu iki değeri içerisinde saklamak amacıyla kullanılan değişkenler de boolean türünden olacaktır. Bazı operatörler kullanıldıkları zaman sonuç olarak bu iki değerden birtanesini üretirler. Bu operatörlere mantıksal operatörler denilir.
== ve != operatorleri:
Bu operatör aslında “eşit mi? ” sorusunun cevabını üreten mantıksal bir operatördür. Çift taraflı olarak kullanıldığında sağdaki ve soldaki değerlerin eşit olması durumunda “true” sonucunu üretir. Eşitlik yok ise “false” sonucu üretilecektir. Mesela 3 == 5 işlemi false değerini üretir.
== operatorune benzer olan, ancak tam tersini yapan diğer bir operatör de != operatörudur. Bu operatör de yine çift taraflı olarak çalışır ve her iki tarafın birbirine eşit olmaması durumunda “true”, eşit olmaları durumunda da “false” değerini üretir. Örneğin 3 != 5 işlemi true değerini üretir.
&& ve || (and ve or) Operatorleri:
Bu iki operator mantık işlemlerinde kullandığımız and ve or operatörleridir. Bunlar da çift taraflı kullanılır.
&& operatoru her iki tarafındaki değer true ise true sonucunu üretecek ama sağ ya da sol taraftan bir tanesi false olması durumunda false değerini üretecektir.
|| operatoru de iki tarafındaki değerlerden en az bir tanesi true olması durumunda true değerini üretecek, her iki tarafın da false olması durumunda false değerini üretecektir.
import javax.swing.*; public class AnaSinif{ public static void main(String arg[]){ boolean deger1 = true; boolean deger2 = false; boolean sonuc1 = deger1 && deger2; JOptionPane.showMessageDialog(null, "deger1: " +deger1+"deger2: "+deger2+ "deger1 && deger2 ->"+ sonuc1); boolean sonuc2 = deger1 || deger2; JOptionPane.showMessageDialog(null, "deger1: " +deger1+"\ndeger2: "+deger2+ "\ndeger1 || deger2 -> "+ sonuc2); deger2 = true; sonuc1 = deger1 && deger2; JOptionPane.showMessageDialog(null, "deger1: " +deger1+"\ndeger2: "+deger2+ "\ndeger1 && deger2 -> "+ sonuc1); deger1 = false; deger2 = false; sonuc1 = deger1 || deger2; JOptionPane.showMessageDialog(null, "deger1: " +deger1+"\ndeger2: "+deger2+ "\n\ndeger1 && deger2 -> "+ sonuc1); } }
>, <, >=, <= operatöleri:
Bu operatörler de çift taraflı çalışırlar ve eğer sağ sol değerleri gerçeklenirse true aksi taktirde false değerini üretirler. Örneğin:
3 > 5 //false
4 < 10 //true
3 >= 3 //true
() Tür Dönüştürme Operatörü
Şu ana kadar öğrendiğimiz kadarıyla belli bir türe ilişkin değerleri aynı türden değişkenler içerisinde saklıyor ve kullanabiliyorduk. Ancak bazı durumlarda farklı türlerin birbirleriyle işleme girmeleri ve bir türe ilişkin bir değerin aynı olmayan türde bir değişkene atanması gibi işlemler gerekebilir. İşte bu gibi durumlarda bir tür dönüşümü söz konusu olabilir.
Tür dönüşümleri de belirli kurallar dahilinde ve belirli bir hiyerarşi ile olmaktadır. Tür dönüşümleri sırasında bazen bilgi kaybının da olabileceğini unutmamak gerekir. Bunun nedenin her türün ifade ettiği bilginin sınırlarının ve hafızada kapladığı alanın farklı olmasından kaynaklandığını hatırlayınız. Aşağıda bilgi legal olan tür dönüşümleri özetlenmektedir:
byte -> short (bilgi kaybı yok)
short -> int (bilgi kaybı yok)
char -> int (bilgi kaybı yok)
int -> long, double (bilgi kaybı yok), float (bilgi kaybı olabilir)
long -> float, double (bilgi kaybı olabilir)
float -> double (bilgi kaybı yok)
Bilgi kaybı, dönüşümlerde hedef veri tipinin sınırlarının dar olmasından kaynaklanır. Mesela
int n = 123456789;
float f = n; //f in degeri 1.2345692E8 olur.
Yukarıdaki dönüşüler otomatik olarak gerçekleşen dönüşümlerdir. Ancak kasıtlı olarak da tür dönüşümü
yapılabilir.Bir değerin türünü dönüştürmek için değerin soluna parantez içerisinde değiştirmek istediğiniz türün adını yazmanız gerekir.
public class AnaSinif{ public static void main(String arg[]){ double k = 12.96; System.out.println("k nin deeri: "+ k); int c; c = (int)k; //burada double türünden bir deer int türünden bir degiskene atanyor. System.out.println("c nin degeri: "+c); } }
Bu örnekte gördüğümüz gibi k değişkeninin içerisindeki değer c değişkenine atandığı için c nin değerinin de 12.96 olmasını beklerdik. Ancak atama sırasında ( ) operatörü ile bir tür dönüşümü yaptık ve bilgi kaybından dolayı c nin değeri 12 oldu. Çünkü int türünden bir değişken virgülden sonra değer alamaz.
Tür Dönüşümlerine İlişkin Özel Metodlar
Tür dönüşümlerini ( ) operatüörü ile yapabileceğimiz gibi bu iş için yazılmış bazı özel metodları da kullanabiliriz. Mesela String olarak verilmiş olan “12” değerini 12 sayısı gibi kullanamayız. Çünkü bu değer çift tırnak içerisinde verilmiştir ve bir String’dir. Yani siz bu değerle bir sayıyı toplamaya kalkarsanız sonuç da otomatik tür dönüşümünden dolayı bir String olacaktır. Şu örneğe dikkat edelim:
public class AnaSinif{ public static void main(String arg[]){ String a = "12"; int b = 13; String c = a + b; System.out.println("Sonuc: "+c); } }
Gördüğünüz gibi java a+b işleminin sonucunu bir String türü olarak belirlemek konusunda bizi zorlamaktadır. Sonucu string olarak hesapladığımzda da bu sefer cevap 25 olması gerekirken 1213 tür. Aslında bu sonuç bir sayı değil bir Stringdir. Yani bir görüntüdür. O halde sayı gibi verilmiş bir Stringi nasıl sayıya çevireceğiz? Bunun için kullanılacak metod Integer isimli bir sınıfın parseInt() isimli metodudur. Mesela kullanıcıdan JOptionPane.showInputDialog() metodu ile yaşını isteylelim ve girdiği yaş ile 3 sayısını çarpıp sonucu bulalım. Ancak biliyoruz ki bu şekilde alınan girişler sayı olarak değil String olarak algılanıyorlar. O halde bu String’i de Integer.parseInt() metodu yardımıyla int türüne dönüştürelim:
import javax.swing.*; public class AnaSinif{ public static void main(String arg[]){ String yas = JOptionPane.showInputDialog(null, "Yasinizi giriniz: "); int sonuc = Integer.parseInt(yas) * 3; JOptionPane.showMessageDialog(null, "Hesap sonucu: "+sonuc); } }
Buna benzer diğer metodlar:
Integer.toString(12); –> parantez içerisinde verilen int türünü String’e çevirir.
Double.parseDouble(12); –> parantez içerisinde verilen int türünü double türüne çevirir.
Double.toString(12.45); –> parantez içerisinde verilen double türünü String’e çevirir.
Bunlar gibi daha birçok metod vardır. Bunların kullanımı yeri geldikçe dökümantasyon yardımıyla öğrenilebilir.
<< Önceki Yazı
Sonraki Yazı >>
Hocam mongoDB ile singleton pattern yapmaya çalışyorum. Internette araştırdım bulamadım. Header parametresi ile ilgili bir örnek yapıp atabilir misiniz.