1. Mga Constant
Maraming iba pang mga programming language ang may constants , iyon ay, mga variable na ang mga value ay hindi mababago . Karaniwan, ginagamit ang mga ito para sa ilang uri ng pangunahing bagay tulad ng bilang Pi
o bilang ng mga araw sa mga buwan ng taon. Iyon ay sinabi, sa prinsipyo, ang isang programmer ay maaaring gumawa ng anumang variable na isang pare-pareho, kung siya ay nagpasya na ang paggawa nito ay kinakailangan.
Kaya paano mo idineklara ang isang hindi nababagong variable (constant) sa Java? Mayroong espesyal na keyword para dito: final
. Ang paglikha ng isang hindi nababagong variable ay mukhang katulad ng paglikha ng isang ordinaryong. Ang pagkakaiba lang ay bago ang uri ng variable kailangan mong isulat ang word final
, tulad nito:
final Type name = value;
Kung susubukan mong magtalaga ng ibang halaga sa isang final
variable, kung gayon ang iyong program ay hindi mag-compile.
Dapat masimulan ang isang final
variable (dapat italaga dito ang isang value) kapag ito ay idineklara. May isang pagbubukod sa panuntunang ito: maaari mong ilipat ang pagsisimula ng isang static na variable ng klase sa isang constructor. Ngunit malalaman mo ang tungkol dito sa Level 10 .
Upang bawasan ang bilang ng mga keyword, ginagamit ng mga developer ng Java ang salita final
para sa higit pa sa pagdedeklara ng mga constant. final
maaari ding ilapat sa mga pamamaraan at maging sa mga klase. Ang mga pamamaraan na idineklara bilang final
hindi maaaring i-override, at ang isang klase na idineklara bilang final
hindi maaaring mamana.
final
Maaaring idagdag ang modifier bago ang anumang mga variable: mga lokal na variable, mga parameter ng pamamaraan, mga field ng klase, at mga static na variable ng klase.
Tandaan na final
bago ang isang variable na pangalan ay proteksyon lamang laban sa anumang mga pagbabago sa variable na iyon . Kung ang isang variable ay nag-iimbak ng isang sanggunian sa isang bagay, kung gayon ang bagay ay maaari pa ring baguhin.
Halimbawa:
|
Lumilikha kami ng isang array. Ito ay hindi pinapayagan: ang data variable ay idineklara bilang final . Ngunit magagawa mo ito. At ito rin. |
Global constants
Kung magpasya kang magdeklara ng mga global constant sa iyong programa, kailangan mong lumikha ng mga static na variable ng klase , at gawin ang mga ito public
at final
. Mayroong isang espesyal na istilo para sa mga pangalan ng naturang mga variable: ang mga ito ay nakasulat sa lahat ng malalaking titik, na may underscore na character na ginagamit upang paghiwalayin ang mga salita.
Mga halimbawa:
class Solution
{
public static final String SOURCE_ROOT = "c:\\projects\\my\\";
public static final int DISPLAY_WIDTH = 1024;
public static final int DISPLAY_HEIGHT = 768;
}
2. Variable shadowing
Gaya ng sinabi namin dati, hindi ka makakagawa ng ilang lokal na variable na may parehong pangalan sa parehong paraan. Sa iba't ibang paraan, magagawa mo.
Ngunit narito ang malamang na hindi mo alam: ang mga variable ng halimbawa at mga variable ng lokal na pamamaraan ay maaaring magkaroon ng parehong pangalan.
Halimbawa:
Code | Variable visibility |
---|---|
|
|
Sa add
pamamaraan, nagdeklara kami ng isang lokal na variable na pinangalanang sum
. Hanggang sa katapusan ng pamamaraan, nililiman nito (o tinatakpan ) ang sum
variable ng instance.
Okay, sabi mo, iyon ay inaasahan sa ilang kahulugan. Ngunit hindi iyon ang katapusan ng kuwento. Lumalabas na kung ang isang variable ng instance ay nililiman ng isang lokal na variable, mayroon pa ring paraan upang sumangguni sa variable ng instance sa loob ng pamamaraan. Ginagawa namin ito sa pamamagitan ng pagsulat ng this
keyword bago ang pangalan nito:
this.name
Narito ang isang halimbawa kung saan matagumpay na naresolba ang hindi pagkakasundo ng pangalan:
Code | Variable visibility |
---|---|
|
|
Ang count
at sum
mga variable ay magagamit saanman mayroon o wala ang this
keyword. Sa mga linya kung saan sum
nililiman ng lokal na variable ang sum
variable ng instance, sum
maa-access lang ang variable ng instance gamit ang this
keyword.
Kung ang isang static na variable ng klase sa halip na isang instance variable ay na-shadow, pagkatapos ay kailangan mong i-access ito sa pamamagitan ng pangalan ng klase sa halip na ang this
keyword:
ClassName.name
Halimbawa:
Code | Variable visibility |
---|---|
|
|
Maaari mong ma-access ang count
at sum
static na mga variable saanman mayroon o hindi ginagamit ang pangalan ng klase Solution
bilang prefix. Sa mga linyang iyon kung saan sum
nililiman ng lokal na variable ang variable ng instance, posible lang ang sum
access sa variable ng instance kapag ginagamit bilang prefix.sum
Solution
3. Mga variable sa loob ng isang for
loop
At isa pang maliit ngunit kawili-wiling katotohanan.
Mayroon ding isang lugar kung saan ang isang variable ay idineklara sa isang espesyal na paraan — sa loob ng isang for
loop .
Maaari mong maalala na ang isang for
loop ay karaniwang may counter variable sa mga panaklong. At ano ang magiging visibility ng variable na ito? Pagkatapos ng lahat, wala ito sa katawan ng loop. Ito ba ang buong pamamaraan? O hindi?
Ang tamang sagot ay: ang isang variable na ipinahayag sa header ng isang for
loop ay makikita lamang sa katawan ng loop at sa header ng for
loop .
Halimbawa:
Code | Variable visibility |
---|---|
|
|
Kaya, maaari kang palaging magsulat ng mga loop nang sunud-sunod sa iyong code at gumamit ng mga counter variable na may parehong pangalan — na hindi lilikha ng anumang mga problema.
Halimbawa:
Code | Variable visibility |
---|---|
|
|
GO TO FULL VERSION