1. Listahan ng mga uri ng wrapper
Alam mo na ang Java ay may 8 primitive na uri, na mga uri na hindi mga klase. Sa isang banda, ito ay mabuti — sila ay simple at kumukuha ng kaunting espasyo. Sa kabilang banda, minsan klase lang ang kailangan natin. Malalaman mo kung bakit ganoon sa susunod na aralin.
Kaya ano ang maaaring gawin?
Simula sa ikalimang bersyon ng Java, ang bawat primitive na uri ay nakakuha ng kambal na klase. Ang bawat ganoong klase ay nag-iimbak ng isang field na may halaga ng isang partikular na uri. Ang mga klase na ito ay tinatawag na mga uri ng wrapper , dahil binabalot nila ang mga primitive na halaga sa mga klase.
Narito ang isang listahan ng mga ganitong uri. May nalalaman ka ba na kahit ano?
Primitive na uri | Klase ng wrapper |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ang mga pangalan ng mga primitive na uri ay nagsisimula sa isang maliit na titik, ngunit ang mga pangalan ng mga klase ng wrapper ay nagsisimula sa isang malaking titik. Ang ilan sa mga pangalan ng klase ay medyo mas mahaba din: Integer
sa halip na int
at Character
sa halip na char
.
Ang lahat ng mga bagay ng mga klase ng wrapper ay hindi nababago ( hindi nababago ).
Ang pinasimpleng code para sa Integer
klase ay mukhang ganito:
Code | Tandaan |
---|---|
|
Variable Constructor Ang pamamaraan ay nagbabalik ng isang halaga Ang static na pamamaraan ay lumilikha ng isang bagong Integer bagay para sa isang int variable |
2. Pag-convert ng isang int
sa isangInteger
Ang mga uri ng wrapper ay itinuturing na katapat ng kanilang mga primitive na kapatid: madali kang makakagawa ng wrapper object na tumutugma sa isang primitive na uri.
Gamitin natin ang uri ng int bilang isang halimbawa upang suriin kung paano nakikipag-ugnayan ang mga primitive na uri sa kanilang mga kaukulang uri ng wrapper. Ang code para sa pag-convert mula sa isang int
tungo sa isang Integer
at vice versa ay magiging ganito:
Upang i-convert ang isang int
sa isang Integer
, kailangan mong isulat ang code na ito:
Integer name = new Integer(value);
Nasaan name
ang pangalan ng isang Integer
variable, at value
ang nakabalot int
na halaga.
Mga halimbawa:
Code | Tandaan |
---|---|
|
|
|
|
|
At para ma-convert ang an Integer
sa isang int
, kailangan mong isulat ang code na ito:
int name = variable.intValue();
Nasaan name
ang pangalan ng isang int
variable, at variable
isang sanggunian sa isang Integer
bagay.
Mga halimbawa:
Code | Tandaan |
---|---|
|
|
|
|
|
|
|
|
3. Autoboxing at unboxing
Ngunit kahit na ang mga simpleng operasyon na may Integer
uri ay hindi madaling isulat.
Tulad ng sinabi namin dati, ang Integer
uri ay hindi nababago ( hindi nababago ). Upang lumikha ng isang Integer
bagay na may bagong int
halaga, kailangan mong tahasang lumikha ng isang bagong Integer
bagay. Iyon ay sinabi, madaling makuha ang halaga ng isang int
naka-imbak sa loob ng isang Integer
bagay — tawagan lang ang intValue()
pamamaraan.
Halimbawa:
Code | Paglalarawan |
---|---|
|
I-wrap 5 sa isang Integer bagay Kunin ang halaga mula sa Integer bagay Lumikha ng bagong Integer bagay (katumbas ng 10) |
Ito ay medyo mahirap na code, sa tingin mo ba?
Naisip ng mga tagalikha ng Java, kaya tinuruan nila ang compiler kung paano awtomatikong gawin ang mga operasyong ito. Ang awtomatikong pag-convert ng isang int
sa isang Integer
ay tinatawag na autoboxing (awtomatikong paglalagay ng halaga sa isang kahon), at ang reverse na operasyon (pag-convert ng isang Integer
sa isang int
) ay tinatawag na unboxing .
Ang iyong code | Ano ang nakikita ng compiler |
---|---|
|
|
|
|
|
|
Salamat sa autoboxing at unboxing, maaari mong ligtas na magtalaga ng int
sa isang Integer
variable at vice versa. Maaari kang magsulat ng mga expression ng anumang kumplikado nang hindi gumagawa ng pagkakaiba sa pagitan ng int
at Integer
mga uri.
Mga halimbawa:
Code | Ano ang bubuo ng compiler |
---|---|
|
|
|
|
4. Paghahambing ng mga variable ng wrapper
Ang autoboxing at unboxing ay simple at transparent na proseso. Gumagamit kami new Integer()
ng mga pahayag kung kinakailangan, at tinatawag namin ang intValue()
pamamaraan kung kinakailangan.
Ang lahat ay gumagana nang maganda at madali para sa iyo, ang programmer. Tandaan na kung ihahambing mo ang isang Integer
at isang Integer
, ang paghahambing ay batay sa sanggunian at hindi mga halaga.
Code | Output ng console |
---|---|
|
|
|
|
Ang a
at b
mga variable ay hindi nag-iimbak int
ng mga halaga. Nag-iimbak sila ng mga sanggunian sa mga bagay. Ibig sabihin, mahalagang tandaan kung paano ihambing ang mga ito nang tama:
mali | Tama |
---|---|
|
|
GO TO FULL VERSION