1. Mga ekspresyon kumpara sa mga pahayag
Sa Java, nakakatulong na makilala ang dalawang kategorya: mga pahayag at mga expression . Ang isang pahayag ay karaniwang sinasabi na naisakatuparan , habang ang isang ekspresyon ay sinasabing sinusuri . Ngunit hindi iyon ang pinakamahalagang bagay.
Ang pangunahing pagkakaiba sa pagitan ng isang pahayag at isang expression ay ang pagsusuri ng isang expression ay may resulta . At ang resultang ito ay may isang uri, at maaari itong italaga sa isang variable o gamitin sa ilang iba pang expression.
Mga halimbawa:
Code | Mga Tala |
---|---|
int x; |
Pahayag |
(a < 10) |
Expression kung kaninong uri ayboolean |
i++; |
Pagpapahayag na ang uri ay kapareho ng uri ng i variable |
x = 5; |
Pagpapahayag na ang uri ay kapareho ng uri ng x variable |
At ano ang ibinibigay nito sa atin?
Una, maaari nating samantalahin ang katotohanan na maraming mga pahayag ay talagang mga expression (ibig sabihin, sinusuri ang mga ito sa isang halaga). Halimbawa, gagana ang code na tulad nito:
Code | Mga Tala |
---|---|
|
|
Pangalawa, kung gusto natin, maaari nating balewalain ang resulta ng pagsusuri ng isang expression.
Code | Code kung saan binabalewala namin ang resulta: |
---|---|
|
|
Hindi namin binabalewala ang resulta ng pagsusuri ng isang expression, halimbawa, kung ang expression ay nagsasangkot ng paggawa ng isang bagay na kapaki-pakinabang, at ang pagkilos na ito ang mahalaga sa amin, hindi ang resulta mismo.
2. Operator ng Ternary
Ang life hack na ito ay mas kawili-wili na kaysa sa nauna. Ang Java ay may espesyal na operator ng ternary . Ang syntax nito ay medyo katulad ng syntax para sa pahayag:if-else
Condition ? Expression 1 : Expression 2;
Kung totoo ang kundisyon , susuriin ang Expression 1 , kung hindi susuriin ang Expression 2 . Ang kundisyon ay sinusundan ng isang tandang pananong , at ang dalawang ekspresyon ay pinaghihiwalay ng tutuldok .
Ang pangunahing pagkakaiba sa pagitan ng ternary operator at isang if-else
statement ay ang ternary operator ay isang expression, na nangangahulugang maaari nating italaga ang resulta nito sa isang bagay.
Halimbawa, ipagpalagay na gusto nating kalkulahin ang minimum na dalawang numero. Gamit ang ternary operator, magiging ganito ang code na ito:
int a = 2;
int b = 3;
int min = a < b ? a : b;
O, sabihin nating kailangan mong magtalaga ng iba't ibang mga halaga sa isang variable depende sa ilang kundisyon. Paano mo gagawin iyon?
Ang isang pagpipilian ay ang paggamit ng isang if-else
pahayag:
int age = 25;
int money;
if (age > 30)
money = 100;
else
money = 50;
Ang pangalawang opsyon ay ang paggamit ng ternary operator , iyon ay, shorthand para sa if-else
pahayag:
int age = 25;
int money = age > 30 ? 100 : 50;
Kaya alin ang mas mahusay na gamitin - isang if-else
pahayag o ang ternary operator ? Sa mga tuntunin ng bilis ng pagpapatupad, walang gaanong pagkakaiba. Ito ay higit na isang bagay ng pagiging madaling mabasa ng code. At ito ay isang napakahalagang punto: ang code ay hindi lamang dapat gumana nang tama, ngunit maging madali din para sa ibang mga programmer na basahin.
Ang pinakasimpleng tuntunin ay ito: kung magkasya ang code sa isang linya , pagkatapos ay gamitin ang ternary operator ; ngunit kung hindi ito magkasya sa isang linya, mas mahusay na gumamit ng isang if-else
pahayag.
3. Paghahambing ng mga tunay na numero
Gaya ng nabanggit kanina, hindi mo basta-basta maaaring kunin ang mga totoong numero at ikumpara ang mga ito. Palaging may posibilidad na ang ilang mahahalagang numero ay maaaring itapon, na magdulot ng mga hindi inaasahang epekto.
Kaya naman mayroong time-tested approach. Kung ang dalawang tunay na numero ay naiiba sa isang napakaliit na halaga, maaari silang ituring na pantay. Halimbawa:
double a = 1.000001;
double b = 1.000002;
if ( (b - a) < 0.0001 )
System.out.println("The numbers are equal");
else
System.out.println("The numbers are not equal");
Ngunit hindi lang iyon ang dapat nating alalahanin, dahil ang pagkakaiba sa pagitan ng mga numero ay maaaring maging negatibo. Kaya para gumana ang diskarteng ito, kailangan mong ihambing hindi lamang ang pagkakaiba sa pagitan ng mga numero, ngunit ang ganap na halaga ng pagkakaiba sa pagitan ng mga numero:|a-b|
Ang Java ay may paraan para sa pagkalkula ng ganap na halaga ng isang numero: Math.abs()
:
int m = Math.abs(value);
Bilang resulta, ang naitama na bersyon ng aming halimbawa sa itaas ay magiging ganito:
double a = 1.000001;
double b = 1.000002;
if ( Math.abs(b - a) < 0.0001 )
System.out.println("The numbers are equal");
else
System.out.println("The numbers are not equal");
GO TO FULL VERSION