MERHABA! Bugün çok önemli bir konuyu, yani Java'daki sayısal operatörleri ele alacağız .
Java'daki sayısal işleçler - 1
Programlamada sayılar her yerdedir. Derine iner ve liseyi hatırlarsanız, bir bilgisayarın tüm bilgileri sayısal bir biçimde temsil ettiğini hatırlayabilirsiniz: ikili kod olarak da bilinen sıfır ve bir kombinasyonları.
Java'daki sayısal işleçler - 2
Programlamada çok sayıda sayısal operatör vardır, bu yüzden en önemlilerini keşfetmek için örnekler kullanacağız :) En basitinden başlayalım: aritmetik operatörler . Bunlar iyi bilinen toplama ( +), çıkarma ( -), çarpma ( *) ve bölme ( /) operatörleridir.

public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;

       System.out.println(x+y);
       System.out.println(x-y);
       System.out.println(x*y);
       System.out.println(x/y);
   }
}
Konsol çıktısı: 1032 966 32967 30 Tüm bunları zaten kullandınız. Bu gruba kalan veya modulo ( ) operatörünü ekleyebilirsiniz %.

public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 33%2;
       System.out.println(y);
   }
}
Konsol çıktısı: 1 Bu örnekte, 33'ü 2'ye böldük. Bu, 2'ye bölünmeyen fazladan bir "kuyruk" (bir) ile 16 verir. Bu "kuyruk", "bölmeden kalan" işleminin sonucudur. Java ayrıca karşılaştırma/ilişkisel işleçler uygular (tıpkı matematikte olduğu gibi). Muhtemelen size de okuldan tanıdık geliyordur:
  • ==( ) eşittir
  • >( ) ' dan büyük
  • <( ) ' dan az
  • >=( ) ' dan büyük veya eşittir
  • <=( ) ' dan küçük veya eşittir
  • eşit değil ( !=)
Burada birçok yeni başlayanın hata yapmasına neden olan önemli bir noktaya dikkat etmelisiniz. "Eşittir" operatörü yazılır ==, değil =. Java'da single, bir değişkene bir sayı, dizi veya başka bir değişkenin değeri atandığında kullanılan atama= operatörüdür .
Java'daki sayısal işleçler - 3

public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 999;
       System.out.println(x=y);// We expect false to be displayed
   }
}
Konsol çıkışı: 999 Hata! Bu açıkçası beklediğimiz bir sonuç değil. Bu tamamen farklı bir veri tipi: bir boolean görmeyi bekliyorduk ama bir sayı bulduk. Bunun nedeni karşılaştırma yerine parantez içinde bir atama işleci kullanmamızdı . (999) değeri değişkene atandı ve ardından değerini gösterdik . İşte bunu yapmanın doğru yolu: x=yyxx

public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 999;
       System.out.println(x==y);
   }
}
Konsol çıktısı: false Şimdi iki sayıyı düzgün bir şekilde karşılaştırdık! :) İşte atama operatörünün ( =) başka bir özelliği: birlikte "zincirlenebilir":

public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;
       int z = 256;

       x = y = z;
       System.out.println(x);
   }
}
Konsol çıktısı: 256 Unutma atama sağdan soladır . Bu ifade ( x = y = z) adım adım yürütülecektir:
  • y = z, yani,y = 256
  • x = y, yani,x = 256

Birli operatörler.

" Bir " anlamına gelen " uno " kelimesinden " unary " olarak adlandırılırlar . Bu adı aldılar çünkü önceki operatörlerin aksine birkaç değil, tek bir sayı üzerinde hareket ediyorlar. Bunlar şunları içerir:
  • Tek eksi. Sayının işaretini çevirir.


public class Main {

   public static void main(String[] args) {

       int x = 999;

       // Change the sign for the first time
       x = -x;
       System.out.println(x);

       // Change the sign for the second time
       x= -x;
       System.out.println(x);
   }
}
Konsol çıktısı: -999 999 Birli eksi operatörünü iki kez kullandık. Sonuç olarak sayımız önce negatifti, sonra tekrar pozitif oldu!
  • Arttırma (++) ve eksiltme (--)
Operatör ++bir sayıyı bir artırır ve --operatör bir sayıyı aynı miktarda azaltır.

public class Main {

   public static void main(String[] args) {

       int x = 999;
       x++;
       System.out.println(x);

       x--;
       System.out.println(x);
   }
}
Konsol çıktısı: 1000 999 C++ dilini duyduysanız bu gösterim size tanıdık gelebilir. Yaratıcıları, "C++, C dilinin bir uzantısıdır" fikrini iletmek için bu ilginç adı kullandılar. Notepad'in popüler geliştirilmiş sürümünün adı Notepad++ Burada önemli bir nokta var. İki tür artırma ve eksiltme işleci vardır: sonek ve önek . x++- sonek ++x- önek Artıları/eksileri sayıdan önce veya sonra koymak arasındaki temel fark nedir? Aşağıdaki örnekte göreceğiz:

public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = x++;
       System.out.println(y);
   }
}

Konsol çıktısı: 999 Bir şeyler doğru değil! x1 artırmak ve yeni değeri y değişkenine atamak istedik . Başka bir deyişle, y 1000 olmalıdır. Ama bunun yerine başka bir şey elde ederiz: 999. Görünüşe göre x artırılmamış ve artırma operatörü çalışmamış? Ama işe yaradı. Kendinizi ikna etmek için xsonunda göstermeyi deneyin :)

public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = x++;
       System.out.println(y);
       System.out.println(x);
   }
}
Konsol çıktısı: 999 1000 Aslında tam da bu yüzden bu işleme postfix deniyor: ana ifadeden sonra gerçekleştirilir . Bunun anlamı, bizim durumumuzda: int y = x++; y = xönce gerçekleştirilir (ve değişken ) ydeğerine başlatılır xve ancak o zaman yürütülür. x++Ya istediğimiz davranış bu değilse? O zaman önek gösterimini kullanmamız gerekir :

public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = ++x;
       System.out.println(y);
   }
}
Bu durumda ++xönce işlenir ve ancak bundan sonra y = x; uygulanmış. Önek yerine postfix kullanmanın her şeyi alt üst edebileceği gerçek bir programda hata yapmamak için bu farkı hemen belleğe yazmalısınız :)

bileşik operatörler

Ek olarak, Java'da sözde bileşik operatörler vardır. İki operatörü birleştirir:
  • Atama
  • Aritmetik operatörler
Bunlar şunları içerir:
  • +=
  • -=
  • *=
  • /=
  • %=
Bir örnek ele alalım:

public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;

       x += y;
       System.out.println(x);
   }
}
Konsol çıkışı: 1032 x += y , x = x + y. Kısa olması için iki sembol art arda kullanılmıştır. -=, *=ve kombinasyonları benzer şekilde çalışır /=.%=

Mantıksal operatörler

Sayısal işleçlere ek olarak, Java ayrıca boolean değerleri ( true ve false ) içeren işlemlere de sahiptir. Bu işlemler mantıksal operatörler kullanılarak gerçekleştirilir.
  • !- mantıksal DEĞİL . Bir boole değerini çevirir

public class Main {

   public static void main(String[] args) {

       boolean x = true;
       System.out.println(!x);
   }
}
Konsol çıktısı: yanlış
  • &&- mantıksal VE . Yalnızca her iki işlenen de doğruysa doğru döndürür .

public class Main {

   public static void main(String[] args) {

       System.out.println(100 > 10 && 100 > 200);
       System.out.println(100 > 50 && 100 >= 100);
   }
}
Konsol çıktısı: false true İlk işlemin sonucu false'tur, çünkü işlenenlerden biri false'tur, yani 100 > 200. true döndürmek için, &&operatör her iki işlenenin de true olmasını gerektirir (ikinci satırda olduğu gibi).
  • ||- mantıksal VEYA . İşlenenlerden en az biri doğru olduğunda doğru döndürür .
Bu operatörü kullandığımızda, önceki örneğimiz farklı bir sonuç veriyor:

public class Main {

   public static void main(String[] args) {

       System.out.println(100 > 10 || 100 > 200);
   }
}
Konsol çıktısı: true İfade 100 > 200hala yanlıştır, ancak VEYA işleci için ilk bölümün ( ) doğru olması tamamen yeterlidir 100 > 10.