MERHABA! Bugün çok önemli bir konuyu, yani Java'daki sayısal operatörleri ele alacağız .
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ı.
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 (
!=
)
==
, 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 .
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=y
y
x
x
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 (--)
++
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! x
1 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 x
sonunda 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 ) y
değerine başlatılır x
ve 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
+=
-=
*=
/=
%=
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 .
public class Main {
public static void main(String[] args) {
System.out.println(100 > 10 || 100 > 200);
}
}
Konsol çıktısı: true İfade 100 > 200
hala yanlıştır, ancak VEYA işleci için ilk bölümün ( ) doğru olması tamamen yeterlidir 100 > 10
.
GO TO FULL VERSION