Nangunguna sa operator - 1

"Hi, Bilaabo!"

"Masayang bati ni Bilaabo sa kanyang kaibigan!"

"Ngayon sasabihin sa iyo ni Bilaabo ang tungkol sa operator precedence. Ngunit sasabihin niya muna sa iyo ang tungkol sa mga operator mismo."

"Ano itong mga operator na sinasabi mo?"

"Actually, pamilyar ka na sa kanila. Baka hindi mo lang alam na tinatawag silang operator."

"Halimbawa, sabihin nating mayroon tayong expression na  c = a + b; "

"Mayroon itong dalawang operator: isang additional operator at isang assignment operator."

"Sa madaling salita, mathematical signs lang ang operators? Like multiplication, division, and addition?"

"Oo, totoo iyon. Gayunpaman, may mga pagkakaiba."

"Hindi ko tutukuyin ang mga operator para sa iyo: ang isang kahulugan ay hindi gagawing mas matalino ka. Mas mainam na makita ang mga ito sa pagkilos. Ang mga operator ay maaaring hatiin sa ilang grupo, na susuriin natin ngayon."

1) " Mga operator ng matematika "

Simbolo Halimbawa Pangalan Paglalarawan (ano ang ginagawa nito)
+ a + b Operator ng karagdagan Operator ng karagdagan.
- c - d Operator ng pagbabawas Ibinabawas ang pangalawang numero mula sa una.
* a * t Operator ng pagpaparami Nagpaparami ng dalawang numero.
/ a / b Operator ng dibisyon Hinahati ang unang numero sa pangalawa.
% c % d Hinahati ang unang numero sa pangalawa. Kinakalkula ang natitira pagkatapos hatiin ang unang numero sa pangalawa.
- -a Unary minus Binabago ang sign ng variable sa kabaligtaran nito.
Dagdag sa minus, at minus sa plus.
+ +a Unary plus Walang nagbabago. Ito ay idinagdag upang purihin ang unary minus operator. Ito ay para lamang sa hitsura.

"Nakikilala ko ang mga ito mula sa paaralan. Kasama sa firmware ko ang mga kurso sa paaralan."

"Ngunit, ano ang tanda ng porsyento na iyon, isang uri ng wizardry?"

"Ito ang operator na " remainder after division ". Kung ang 11 ay hinati sa 5, makakakuha tayo ng 2 at ang natitirang 1. Ang 1 na ito ay maaaring makuha sa pamamagitan ng pagsulat ng 11 % 5;"

"Kapag hinati mo ang mga integer sa Java, ang resulta ay isang integer din. Ang natitira sa operasyon ng paghahati ay binabalewala lang. Kung hahatiin natin ang 8 sa 5, makakakuha tayo ng 1."

Pagpapahayag Resulta
19 / 10 1 Kung hahatiin natin ang 19 sa 10, ang resulta ay 1 na may natitirang 9.
19 % 10 9 Kung hahatiin natin ang 19 sa 10, ang resulta ay 1 na may natitirang 9.
2 / 5 0 Kung hahatiin natin ang 2 sa 5, ang  resulta ay 0 na may natitirang 2.
16 % 2 0 Kung hahatiin natin ang 16 sa 2, ang resulta ay 8 na may natitirang 0.

"Ngunit ano sa mundo ang kailangan natin ng natitira?"

"Ipagpalagay na kailangan mong suriin kung ang isang integer ay pantay. Pagkatapos ay maaari mong isulat ang:"

if (a % 2 == 0)

"At kung kailangan mong suriin kung ang b ay kakaiba, maaari mong isulat ang:"

if (b % 2 == 1)

"O upang suriin kung ang d ay mahahati ng 3:"

if (d % 3 == 0)

"Interesting. Tatandaan ko yan."

2)  " Mga operator ng paghahambing "

Simbolo Halimbawa Pangalan Paglalarawan (ano ang ginagawa nito)
< a < b Mas mababa sa Sinusuri upang makita kung ang a ay mas mababa sa b.
<= c <= d Mas mababa sa o katumbas ng Sinusuri upang makita kung ang c ay mas mababa o katumbas ng d.
> a > b Mahigit sa Sinusuri upang makita kung ang a ay mas malaki kaysa sa b.
>= c >= d Mas malaki kaysa sa o katumbas ng Sinusuri upang makita kung ang c ay mas malaki sa o katumbas ng d.
== i == j katumbas Sinusuri upang makita kung ang i ay katumbas ng j.
!= a != 0 Hindi kapareho ng Sinusuri upang makita kung ang a ay hindi katumbas ng zero.

"Ginagamit ko na ang lahat ng ito."

"At ano ang pangunahing pagkakaiba sa pagitan ng mga operator na ito at ng mga mathematical operator?"

"Kung magdadagdag tayo ng dalawang numero, makakakuha tayo ng isang numero; ngunit, kung ihahambing natin ang dalawang numero, makakakuha tayo ng totoo o mali."

"Tama. Ang resulta ng paghahambing ay isang " logical value " na halaga, na, tulad ng alam mo, ay kinakatawan ng uri ng boolean. Mayroong dalawang posibilidad: true o false.

"Yep, malinaw na lahat. Alam ko na."

3) " Mga lohikal na operator "

Simbolo Halimbawa Pangalan Paglalarawan (ano ang ginagawa nito)
&& a && b AT Ang resulta ng expression ay totoo lamang kapag pareho ang a at b ay totoo.
|| c || d O Ang resulta ng expression ay totoo kung ang alinman sa a o b ay totoo. Pareho sila o kahit isa.
! !a HINDI Ang resulta ng expression ay totoo lamang kung ang a ay mali.

"Maaari lang gamitin ang mga lohikal na operator sa mga boolean na variable o expression."

Halimbawa Paglalarawan
boolean a = true;
boolean b = true;if (a && b)
Ang kung kondisyon ay totoo kung ang parehong mga halaga ay totoo
Sa madaling salita, kung pareho ang a at b ay totoo, ang resulta ay totoo .
boolean a = true;
boolean b = false;if (a || b)
Ang kung kondisyon ay totoo kung hindi bababa sa isang halaga ay totoo
Sa madaling salita, kung alinman sa a o b ay totoo, ang resulta ay totoo .
boolean b = false;

if (!b)

Ang kung kondisyon ay totoo kung ang b ay hindi totoo.
Sa madaling salita, kung   ang b ay mali , ang resulta ay  totoo .
int a = 2, b = 3, c = 4;

if (a < b && a < c)
if ((a < b) && (a < c))

Kung ang a ay mas mababa sa b at ang a ay mas mababa sa c, kung gayon ang resulta ng expression ay totoo.
Ang a, b, at c ay mga integer, ngunit ang resulta ng paghahambing ng mga integer ay isang lohikal na halaga (true, false), na nangangahulugang maaari tayong gumamit ng mga lohikal na operator.

"Alam ko na ang lahat ng ito."

"Talaga? Ituloy na natin."

4) " Bitwise operators "

Simbolo Halimbawa Pangalan Paglalarawan (ano ang ginagawa nito)
& a & b AT Bitwise AT
| c | d O Bitwise O
~ ~a HINDI Bitwise HINDI
^ a ^ b XOR Bitwise "EKSKLUSIBO O"

" Ang mga bitwise operator ay nagsasagawa ng bit-by-bit na operasyon sa mga integer."

"Ano yan?"

"Ang bawat numero ay kinakatawan bilang isang set ng mga bit, at pagkatapos ay ang resulta ay kinakalkula bilang mga sumusunod:"

"Kung ang unang bit ng parehong numero ay 1, ang unang bit ng resulta ay magiging 1."

"Kung ang pangalawang bit ng parehong mga numero ay 1, ang pangalawang bit ng resulta ay magiging 1. At iba pa."

"Totoo ba iyon para sa lahat ng bitwise operator?"

"It's a lot simple than that. A bit can only have two values, 0 and 1, right?"

"Tama."

"Pagkatapos ay isipin ang 1 bilang totoo, at 0 bilang mali. Ang mga operasyon sa mga indibidwal na bit ay halos magkapareho sa mga lohikal na operasyon:"

Lohikal na pagpapahayag Bitwise na expression
totoo && totoo == totoo 1&1 == 1
totoo && mali == mali 1&0 == 0
totoo || totoo == totoo 1|1 == 1
totoo || mali == totoo 1|0 == 1
mali || mali = mali 0|0 == 0
!false == totoo ~0 == 1
!totoo == mali ~1 == 0

"Naku! Napakadali lang niyan."

"Oo, huwag lang kalimutan na ang mga bitwise na operasyon ay gumagamit ng kaukulang mga bit mula sa dalawang numero."

"Oo, natatandaan ko: ang unang bit ng isang numero ay ipinares sa unang bit ng pangalawa, at ang resulta ay isinusulat din sa unang bit. At ganoon din ang natitira sa mga bit."

"Tama. May tanong ka pa ba?"

"Ano ang XOR at 'eksklusibo o'?"

"Ito ay isang piraso ng cake: kapag ang mga halaga ay naiiba, ito ay totoo; kapag sila ay pareho, ito ay hindi totoo."

Lohikal na pagpapahayag Bitwise na expression
totoo XOR totoo == mali 1 ^ 1 == 0
false XOR false == false 0 ^ 0 == 0
totoo XOR mali == totoo 1 ^ 0 == 1
false XOR true == totoo 0 ^ 1 == 1

Narito ang ilang higit pang mga halimbawa ng mga pagpapatakbo ng bitwise:

Halimbawa Mga numero bilang mga bit Resulta bilang mga bit Resulta
5 & 3 0000010 1  at 0000001 1 0000000 1 1
7 & 2 000001 1 1 at 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

"Salamat, Bilaabo. Ngayon alam ko na."

"May isa pang grupo ng mga bitwise operator, ang mga shift operator:"

5) " Mga shift operator "

Simbolo Halimbawa Pangalan Paglalarawan (ano ang ginagawa nito)
>> a >> b tamang shift Inililipat ang mga bit ng numerong a pakanan ng b digit.
<< c << d kaliwang shift Inilipat ang mga bit ng numero c sa kaliwa ng d digit.
>>> a >>> 2 unsigned right shift Inililipat ang mga bit ng numero a pakanan ng 2 digit.

"Anong klaseng street magic ito?"

"Talagang simple lang lahat. Tingnan mo:"

Halimbawa Mga numero bilang mga bit Resulta bilang mga bit Resulta
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

"Ang paglilipat ng mga bit ng numero sa kaliwa ng 1 ay kapareho ng pag-multiply ng numero sa 2. Ang paglilipat sa pamamagitan ng dalawang digit ay katumbas ng pagpaparami ng 4, ng tatlong digit — pagpaparami ng 8, at iba pa."

"Ang paglilipat pakanan ay tumutugma sa paghahati sa 2, 4, 8, 16, atbp."

"Ngunit ano ang pagkakaiba ng >>> at >> operator?"

"Nag-iiba sila kapag nagtatrabaho sa mga negatibong numero. Ito ay dahil  ang mga naka-sign na numero ay gumagamit ng pinakakaliwang bit upang ipahiwatig ang sign. Bilang resulta, ang isang negatibong numero ay huminto sa pagiging negatibo kapag lumilipat sa kanan. Kaya, sila ay dumating sa dalawang magkaibang mga operator. Tingnan mo:"

Pagpapahayag Resulta Paglalarawan
1 000 1010 >> 1 11 000 101 Ang negatibong numero ay mananatiling negatibo.
Para sa mga negatibong numero, ang mga papasok na bit ay puno ng 1s.
1 000 1010 >> 2 111 000 10
1 000 1010 >> 3 1111 000 1
1 000 1010 >>> 1 01 000 101 Ang negatibong numero ay hindi na negatibo. Para sa mga negatibong numero, ang mga papasok na bit ay puno ng 0s.
1 000 1010 >>> 2 001 000 10
1 000 1010 >>> 3 0001 000 1

"Ang shift ay hindi cyclic. Ang mga bit na gumagalaw sa kabila ng kaliwa o kanang gilid ng numero ay itinatapon lang."

6) " Mga operator ng pagtatalaga "

"Alam ko na kung anong assignment. Pero bakit 'operators' ang sinasabi mo?"

"Dahil marami sila ☺"

Operator Ano ang ibig sabihin nito
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;

"Sa tingin ko nakuha mo ang lohika."

7) " Mga operator ng pagtaas at pagbaba "

Notasyon Halimbawa Paglalarawan
++ a++;
++b;
Pinapataas ang bilang ng 1.
-- d--;
--i;
Binabawasan ng 1 ang bilang o variable.

"May pagkakaiba ba sa pagitan ng paglalagay ng dalawang minus sign bago o pagkatapos ng variable?"

"Oo, mayroon, bagaman hindi masyadong malaki. Kung ang isang variable na may isa sa mga operator na ito ay bahagi ng isang expression o pagtatalaga, kung gayon may mga pagkakaiba. Mas gusto kong ipakita sa iyo sa pamamagitan ng halimbawa:"

Halimbawa Kung ano talaga ang nangyayari Paglalarawan
int a = 3;
int b = ++a;
int a = 3;
a = a + 1;
int b = a;
Ang a ay unang nadagdagan ng 1, at pagkatapos ay ginagamit ito sa expression.
int a = 3;
int b = a++;
int a = 3;
int b = a;
a = a + 1;
Ang a ay unang ginamit sa expression, at pagkatapos ay tataas ng 1.
int a = 3;
return a++;
int a = 3;
int result = a;
a = a + 1;
return result;
Ang function ay magbabalik ng 3, ngunit ang halaga ng a ay tataas ng 1.
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;
Ang resulta dito ay 13. Una, ang x ay tataas ng 1, at ang halagang ito ay papalitan ang unang termino, at pagkatapos ang x ay muling tataas ng 1.

"Whoa! Ang galing!"

"I'm glad nagustuhan mo. Pero, kung walang expression o assignment, wala namang differences:"

"x++ ay katumbas ng x = x + 1."

"++x ay katumbas ng x = x + 1."

"Isaisip ko 'yan. Salamat, Bilaabo."

8)  " Operator ng Ternary "

"Ang operator na ito ay hindi lang gumagamit ng isa o dalawang variable o expression. Gumagamit ito ng tatlong variable o expression nang sabay-sabay:"

Notasyon Katumbas na code:
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;

"Well, sobrang convenient niyan."

"Oo. At compact ito at nababasa ang code. Enjoy using it!"

9) " Iba pa "

"Gaano man kahusay ang pagkakaayos ng iyong koleksyon ng musika, kailangan mo pa ring gumawa ng "Miscellaneous" na folder."

"Oo, ang sinumang kinailangan pang ikategorya ang musika ay lubos na sasang-ayon."

"Kaya, may tatlo pang operator na gusto kong sabihin sa iyo tungkol sa:"

Notasyon Halimbawa Paglalarawan
() (a + b) * c Ang mga panaklong ay nagpapataas ng precedence ng operator.
Ang mga bagay sa panaklong ay unang isinasagawa.
[] c [i] = c [i + 1]; Kumuha ng elemento ng array ayon sa index.
. int n = a.length; Ina-access ng " dot operator " ang mga variable at pamamaraan ng isang bagay.

"At, sa wakas, narito ang isang talahanayan na nagbubuod sa nangunguna sa operator:"

Mga operator Mga halimbawa
Pinakamataas na precedence (ang mga operator ay isinasagawa ayon sa kanilang pagkakasunud-sunod sa talahanayang ito)
()
[]
.
(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;
=
*=, /=, %=
-=, +=
<<=. >>=, >>>=
&=, ^=. |=
Pinakamababang precedence (naganap na huling)