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 ivariable
x = 5; Pagpapahayag na ang uri ay kapareho ng uri ng xvariable

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
int x, y, z;
x = y = z = 1;
int x, y, z;
x = (y = (z = 1))

Pangalawa, kung gusto natin, maaari nating balewalain ang resulta ng pagsusuri ng isang expression.

Code Code kung saan binabalewala namin ang resulta:
int x = scanner.nextInt();
boolean m = (5 < 10);
scanner.nextInt();
(5 < 10);

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-elsestatement 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-elsepahayag:

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-elsepahayag:

int age = 25;
int money = age > 30 ? 100 : 50;

Kaya alin ang mas mahusay na gamitin - isang if-elsepahayag 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-elsepahayag.



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");