
"Merhaba, Bilaabo!"
"Bilaabo arkadaşını selamlamaktan mutlu!"
"Bugün Bilaabo size operatör önceliğinden bahsedecek. Ama önce size operatörlerin kendisinden bahsedecek."
"Bahsettiğin bu operatörler ne?"
"Aslında onlara zaten aşinasın. Onlara operatör dendiğini bilmiyor olabilirsin."
"Örneğin, c = a + b ifadesine sahip olduğumuzu varsayalım; "
"İki işleci vardır: bir toplama işleci ve bir atama işleci."
"Başka bir deyişle, operatörler sadece matematiksel işaretler mi? Çarpma, bölme ve toplama gibi mi?"
"Evet, bu doğru. Ancak farklılıklar var."
"Senin için operatörleri tanımlamayacağım: bir tanım seni daha akıllı yapmaz. Onları çalışırken görmek daha iyi. Operatörler, şimdi inceleyeceğimiz birkaç gruba ayrılabilir."
1) " Matematiksel operatörler "
Sembol | Örnek | İsim | Açıklama (ne yapar) |
---|---|---|---|
+ |
a + b |
Toplama operatörü | Toplama operatörü. |
- |
c - d |
çıkarma operatörü | İkinci sayıyı birinciden çıkarır. |
* |
a * t |
çarpma operatörü | İki sayıyı çarpar. |
/ |
a / b |
Bölüm operatörü | İlk sayıyı ikinciye böler. |
% |
c % d |
İlk sayıyı ikinciye böler. | Birinci sayıyı ikinciye böldükten sonra kalanı hesaplar. |
- |
-a |
tekli eksi | Değişkenin işaretini tersine çevirir. Artıdan eksiye ve eksiden artıya. |
+ |
+a |
birli artı | Hiçbir şeyi değiştirmez. Bu, tekli eksi operatörünü tamamlamak için eklendi. Sadece görünüş için. |
"Bunları okuldan tanıyorum. Donanım yazılımım okul kurslarını da içeriyor."
"Ama bu yüzde işaretinin nesi var, bir tür büyücülük mü?"
" Bölmeden sonra kalan " operatörüdür. 11'i 5'e bölersek 2 ve kalan 1 olur. Bu 1, % 11 5 yazılarak elde edilebilir;"
"Java'da tamsayıları böldüğünüzde sonuç da bir tamsayıdır. Bölme işleminden kalan basitçe göz ardı edilir. 8'i 5'e bölersek 1 elde ederiz."
İfade | Sonuç | |
---|---|---|
19 / 10 |
1 | 19'u 10'a bölersek sonuç 1 ve kalan 9 olur. |
19 % 10 |
9 | 19'u 10'a bölersek sonuç 1 ve kalan 9 olur. |
2 / 5 |
0 | 2'yi 5'e bölersek sonuç 0 ve kalan 2 olur. |
16 % 2 |
0 | 16'yı 2'ye bölersek, sonuç 8 ve kalan 0'dır . |
"Ama geri kalanına ne gerek var ki?"
"Bir tamsayının çift olup olmadığını kontrol etmeniz gerektiğini varsayalım. O zaman şunu yazabilirsiniz:"
if (a % 2 == 0)
"Ve b'nin tek olup olmadığını kontrol etmeniz gerekirse, şunu yazabilirsiniz:"
if (b % 2 == 1)
"Veya d'nin 3'e bölünebilir olup olmadığını kontrol etmek için:"
if (d % 3 == 0)
"İlginç. Bunu hatırlayacağım."
2) " Karşılaştırma operatörleri "
Sembol | Örnek | İsim | Açıklama (ne yapar) |
---|---|---|---|
< |
a < b |
Daha az | a'nın b'den küçük olup olmadığını kontrol eder. |
<= |
c <= d |
küçük veya eşit | c'nin d'den küçük veya eşit olup olmadığını kontrol eder. |
> |
a > b |
daha büyük | a'nın b'den büyük olup olmadığını kontrol eder. |
>= |
c >= d |
büyük veya eşittir | c'nin d'den büyük veya eşit olup olmadığını kontrol eder. |
== |
i == j |
eşittir | i'nin j'ye eşit olup olmadığını kontrol eder. |
!= |
a != 0 |
Eşit değil | a'nın sıfıra eşit olup olmadığını kontrol eder. |
"Bunların hepsini zaten kullanıyorum."
"Ve bu operatörler ile matematiksel operatörler arasındaki temel fark nedir?"
"İki sayıyı toplarsak bir sayı elde ederiz, ancak iki sayıyı karşılaştırırsak doğru veya yanlış çıkar."
"Doğru. Bir karşılaştırmanın sonucu, bildiğiniz gibi, boole türüyle temsil edilen bir " mantıksal değer " değeridir. İki olasılık vardır: doğru veya yanlış.
"Evet, her şey açık. Bunu zaten biliyorum."
3) " Mantıksal operatörler "
Sembol | Örnek | İsim | Açıklama (ne yapar) |
---|---|---|---|
&& |
a && b |
VE | İfadenin sonucu yalnızca hem a hem de b doğru olduğunda doğrudur. |
|| |
c || d |
VEYA | a veya b doğruysa ifadenin sonucu doğrudur. İkisi veya en az biri. |
! |
!a |
OLUMSUZ | İfadenin sonucu yalnızca a yanlışsa doğrudur. |
"Mantıksal işleçler yalnızca boolean değişkenler veya ifadelerle kullanılabilir."
Örnek | Tanım |
---|---|
boolean a = true; boolean b = true;if (a && b) |
Her iki değer de doğruysa if koşulu doğrudur. Başka bir deyişle, hem a hem de b doğruysa, sonuç doğrudur . |
boolean a = true; boolean b = false;if (a || b) |
En az bir değer doğruysa if koşulu doğrudur. Başka bir deyişle, a veya b doğruysa, sonuç doğrudur . |
boolean b = false;
|
b doğru değilse if koşulu doğrudur. Başka bir deyişle, b false ise sonuç true olur . |
int a = 2, b = 3, c = 4;
|
a, b'den küçükse ve a, c'den küçükse, ifadenin sonucu doğrudur. a, b ve c tam sayılardır, ancak tamsayıları karşılaştırmanın sonucu mantıksal bir değerdir (doğru, yanlış), yani mantıksal işleçler kullanabiliriz. |
"Bütün bunları zaten biliyorum."
"Gerçekten mi? O zaman devam edelim."
4) " Bitsel operatörler "
Sembol | Örnek | İsim | Açıklama (ne yapar) |
---|---|---|---|
& |
a & b |
VE | bit düzeyinde VE |
| |
c | d |
VEYA | bitsel VEYA |
~ |
~a |
OLUMSUZ | bit düzeyinde DEĞİL |
^ |
a ^ b |
XOR | Bit düzeyinde "ÖZEL VEYA" |
" Bitsel işleçler, tamsayılar üzerinde bit-bit işlemler gerçekleştirir."
"Bu da ne?"
"Her sayı bir bit kümesi olarak temsil edilir ve ardından sonuç aşağıdaki gibi hesaplanır:"
"Her iki sayının da ilk biti 1 ise, sonucun ilk biti 1 olacaktır."
"Her iki sayının ikinci biti 1 ise, sonucun ikinci biti 1 olacaktır. Ve böyle devam eder."
"Bu, tüm bitsel operatörler için geçerli mi?"
"Bundan çok daha basit. Bir bitin yalnızca iki değeri olabilir, 0 ve 1, değil mi?"
"Sağ."
"O zaman 1'i doğru ve 0'ı yanlış olarak düşünün. O zaman tek tek bitler üzerindeki işlemler, mantıksal işlemlerle hemen hemen aynı olacaktır:"
mantıksal ifade | bit düzeyinde ifade |
---|---|
doğru && doğru == doğru | 1&1 == 1 |
doğru && yanlış == yanlış | 1&0 == 0 |
doğru || doğru == doğru | 1|1 == 1 |
doğru || yanlış == doğru | 1|0 == 1 |
yanlış || yanlış = yanlış | 0|0 == 0 |
!yanlış == doğru | ~0 == 1 |
!doğru == yanlış | ~1 == 0 |
"Ah! Bu çok kolay."
"Evet, bit düzeyinde işlemlerin iki sayıdan karşılık gelen bitleri kullandığını unutmayın."
"Evet, hatırlıyorum: Bir sayının ilk biti, ikincinin ilk bitiyle eşleştiriliyor ve sonuç da ilk bit'e yazılıyor. Aynı şey geri kalan bitler için de geçerli."
"Doğru. Başka sorunuz var mı?"
"XOR ve 'özel veya' ile ne alakası var?"
"Çok kolay: Değerler farklı olduğunda doğrudur, aynı olduğunda yanlıştır."
mantıksal ifade | bit düzeyinde ifade |
---|---|
doğru XOR doğru == yanlış | 1 ^ 1 == 0 |
yanlış XOR yanlış == yanlış | 0 ^ 0 == 0 |
doğru XOR yanlış == doğru | 1 ^ 0 == 1 |
yanlış XOR doğru == doğru | 0 ^ 1 == 1 |
İşte bitsel işlemlerin birkaç örneği daha:
Örnek | Bit olarak sayılar | Bit olarak sonuç | Sonuç |
---|---|---|---|
5 & 3 |
0000010 1 & 0000001 1 | 0000000 1 | 1 |
7 & 2 |
000001 1 1 & 000000 1 0 | 00000010 | 2 |
5 | 9 |
00000 1 0 1 | 0000 1 00 1 | 00001101 | 13 |
5 ^ 9 |
00000 101 ^ 00001001 | 0000 1100 | 12 |
~9 |
~ 00001001 | 11110110 | 246 |
"Teşekkürler Bilaabo. Artık biliyorum."
"Bir bitsel operatör grubu daha var, kaydırma operatörleri:"
5) " Shift operatörleri "
Sembol | Örnek | İsim | Açıklama (ne yapar) |
---|---|---|---|
>> |
a >> b |
sağa kaydırma | a sayısının bitlerini b basamak sağa kaydırır. |
<< |
c << d |
Sol shift | c sayısının bitlerini d basamak sola kaydırır. |
>>> |
a >>> 2 |
imzasız sağa kaydırma | a sayısının bitlerini 2 basamak sağa kaydırır. |
"Bu nasıl bir sokak büyüsü?"
"Aslında hepsi çok basit. Şuna bir bak:"
Örnek | Bit olarak sayılar | Bit olarak sonuç | Sonuç |
---|---|---|---|
10 >> 1 |
0000 101 0 >> 1 | 00000 101 | 5 |
10 >> 2 |
0000 101 0 >> 2 | 000000 10 | 2 |
10 << 1 |
0000 101 0 << 1 | 000 101 00 | 20 |
10 << 2 |
0000 101 0 << 2 | 00 101 000 | 40 |
"Bir sayının bitlerini 1 ile sola kaydırmak, sayıyı 2 ile çarpmakla aynı şeydir. İki basamak kaydırma, 4 ile, üç basamakla çarpmaya eşdeğerdir - 8 ile çarpma vb."
"Sağa kaydırmak 2, 4, 8, 16 vb. ile bölmeye karşılık gelir."
"Fakat >>> ve >> operatörleri arasındaki fark nedir?"
"Negatif sayılarla çalışırken farklılık gösterirler. Bunun nedeni , işaretli sayıların işareti belirtmek için en soldaki biti kullanmasıdır. Sonuç olarak, sağa kaydırıldığında negatif bir sayı negatif olmaktan çıkar. Böylece iki farklı operatör buldular. Buna bir bak:"
İfade | Sonuç | Tanım |
---|---|---|
1 000 1010 >> 1 | 11 000 101 | Negatif sayı negatif kalır. Negatif sayılar için gelen bitler 1'lerle doldurulur. |
1 000 1010 >> 2 | 111 000 10 | |
1 000 1010 >> 3 | 1111 000 1 | |
1 000 1010 >>> 1 | 01 000 101 | Negatif sayı artık negatif değil. Negatif sayılar için gelen bitler 0'larla doldurulur. |
1 000 1010 >>> 2 | 001 000 10 | |
1 000 1010 >>> 3 | 0001 000 1 |
"Kayma döngüsel değildir. Sayının sol veya sağ kenarının ötesine geçen bitler basitçe atılır."
6) " Atama işleçleri "
"Görevin ne olduğunu zaten biliyorum. Ama neden 'operatörler' diyorsunuz?"
"Çünkü birkaç tane var ☺"
Şebeke | Ne demek |
---|---|
a += b; |
a = a + b; |
a -= b; |
a = a - b; |
a *= b; |
a = a * b; |
a %= b; |
a = a % b; |
a |= b; |
a = a | b; |
a &= b; |
a = a & b; |
"Sanırım mantığını anladın."
7) " Arttırma ve azaltma operatörleri "
Gösterim | Örnek | Tanım |
---|---|---|
++ |
a++; ++b; |
Sayıyı 1 artırır. |
-- |
d--; --i; |
Sayıyı veya değişkeni 1 azaltır. |
"Değişkenin önüne veya arkasına iki eksi işareti koymak arasında bir fark var mı?"
"Evet, çok büyük olmasa da var. Bu operatörlerden birine sahip bir değişken bir ifadenin veya atamanın parçasıysa, o zaman farklılıklar vardır. Örnekle göstermeyi tercih ederim:"
Örnek | gerçekten ne oluyor | Tanım |
---|---|---|
int a = 3; int b = ++a; |
int a = 3; a = a + 1; int b = a; |
a önce 1 artırılır sonra ifadede kullanılır. |
int a = 3; int b = a++; |
int a = 3; int b = a; a = a + 1; |
ifadede önce a kullanılır, sonra 1 artar. |
int a = 3; return a++; |
int a = 3; int result = a; a = a + 1; return result; |
İşlev 3 döndürür, ancak a'nın değeri 1 artırılır. |
int x = 5; x = ++x + ++x; |
int x = 5; int a = x + 1;// The first term is 6 x = a; int b = x + 1;// The second term is 7 x = b; x = a + b; |
Buradaki sonuç 13'tür. Önce x 1 artacak ve bu değer ilk terimin yerine geçecek daha sonra x tekrar 1 artacaktır. |
"Vay canına! Harika!"
"Beğenmene sevindim. Ama anlatım ve atama yoksa o zaman bir fark yok."
"x++, x = x + 1'e eşdeğerdir."
"++x, x = x + 1'e eşdeğerdir."
"Bunu aklımda tutacağım. Teşekkürler, Bilaabo."
8) " Üçlü operatör "
"Bu operatör yalnızca bir veya iki değişken veya ifade kullanmaz. Aynı anda üç değişken veya ifade kullanır:"
Gösterim | eşdeğer kod: |
---|---|
a ? b : c; |
if (a) b else c |
int min = a < b ? a : b; |
if (a < b) min = a; else min = b; |
return a != null ? a.length : 0; |
if (a != null) return a.length; else return 0; |
"Pekala, bu çok uygun."
"Evet. Kompakt ve kodu okunabilir. Keyifle kullanın!"
9) " Diğer "
"Müzik koleksiyonunuz ne kadar iyi organize edilmiş olursa olsun, yine de bir "Çeşitli" klasörü oluşturmanız gerekir."
"Evet, müziği kategorize etmek zorunda kalan herkes kesinlikle aynı fikirde olacaktır."
"Yani, size bahsetmek istediğim üç operatör daha var:"
Gösterim | Örnek | Tanım |
---|---|---|
() |
(a + b) * c |
Parantezler operatör önceliğini artırır. Parantez içindeki şeyler önce yürütülür. |
[] |
c [i] = c [i + 1]; |
Dizine göre bir dizi öğesi alın. |
. |
int n = a.length; |
" Nokta işleci " bir nesnenin değişkenlerine ve yöntemlerine erişir. |
"Ve son olarak, işte operatör önceliğini özetleyen bir tablo:"
Operatörler | örnekler |
---|---|
En yüksek öncelik (operatörler bu tablodaki sıralarına göre yürütülür) | |
() [] . |
(a + b) c [i] = c [i] + 1 |
++ -- ~ ! + - |
i++; ++i; --j; a--; ~c !f return +a; return -a; |
* / % |
a * b c / d a % b |
+ - |
a + b c - d String s = "count"+"35"; |
>> << >>> |
a >> 3 b << 2 c >>> 3 |
< <= > >= |
a < b a <= b c > b c >= b |
== != |
a == 3 a != 0 |
& |
a & 7 |
^ |
a ^ b |
| |
a | b |
&& |
(a < b) && (a < c) |
|| |
(b != 0) || (c != 0) |
? : = |
a > 0 ? a : -a; |
= *=, /=, %= -=, += <<=. >>=, >>>= &=, ^=. |= |
|
En düşük öncelik (en son gerçekleştirilen) |
GO TO FULL VERSION