1. Integer
klase
Integer
ay mabuti din dahil ito ay isang klase, na nangangahulugan na maaari itong magkaroon ng mga patlang at pamamaraan. At, siyempre, mayroon sila. Marami sa kanila — dose-dosenang mga ito. Dito natin isasaalang-alang ang mga pinakapangunahing.
Ang Integer
klase ay may dalawang field na naglalaman ng maximum at minimum na posibleng mga halaga ng int
uri:
Patlang | Paglalarawan |
---|---|
|
Pinakamataas na posibleng halaga ng int uri |
|
Pinakamababang posibleng halaga ng int uri |
Minsan gusto mong italaga ang pinakamaliit o pinakamalaking posibleng int
halaga sa isang variable. Upang maiwasan ang pagkalat ng iyong code sa hindi maintindihan na mga constant, maaari mong isulat ito nang napakalinaw tulad ng sumusunod:
Code | Paglalarawan |
---|---|
|
|
Ang Integer
klase ay mayroon ding ilang mga kawili-wiling pamamaraan. Nandito na sila:
Paraan | Paglalarawan |
---|---|
|
Nagbabalik ng string na hexadecimal na representasyon ng numero |
|
Nagbabalik ng string na binary na representasyon ng numero |
|
Nagbabalik ng string na octal na representasyon ng numero |
|
Binabalot ang ipinasa int sa isang Integer bagay |
|
Ibinabalik ang numerong nakuha mula sa naipasa na string |
Naranasan mo dati ang static Integer.parseInt()
na pamamaraan. Alalahanin natin kung paano ito gumagana:
int name = Integer.parseInt(string);
Kung ang isang string na naglalaman ng isang numero (mga digit lamang) ay ipapasa sa parseInt()
pamamaraan, ito ay mag-parse ng string at ibabalik ang numerong nilalaman nito.
Ang iba pang mga pamamaraan ay kapaki-pakinabang din. Halimbawa, ang ilan sa kanila ay maaaring mag-convert ng isang naipasa na numero sa isang string na naglalaman ng binary, octal o hexadecimal na representasyon ng numero.
2. Double
klase
Sa pangkalahatan, ang Double
klase ay katulad ng Integer
klase, tanging ito ay bumabalot ng isang double
kaysa sa isang int
. Mayroon din itong mga larangan at pamamaraan na magiging interesante sa atin. Isaalang-alang ang ilan sa mga ito:
Ang Double
klase ay may anim na kawili-wiling larangan:
Patlang | Paglalarawan |
---|---|
|
Negatibong infinity |
|
Positibong infinity |
|
Pinakamababang posibleng exponent (2 x ) |
|
Pinakamataas na posibleng exponent (2 x ) |
|
Pinakamababang posibleng halaga ng double uri |
|
Pinakamataas na posibleng halaga ng double uri |
Infinity
Kung hahatiin mo -1.0
sa 0.0
, makakakuha ka ng negatibong infinity. Kung hahatiin mo 1.0
sa 0.0
, makakakuha ka ng positibong infinity. Hindi lamang maaari mong hatiin ang isang double
sa pamamagitan ng zero, ngunit maaari mo ring gamitin ito upang iimbak ang resulta ng mga operasyong ito.
Exponent ng adouble
Ang pag-unawa sa exponent ay madali. Sa panloob, ang isang double ay binubuo ng isang mantissa at isang exponent. Ngunit dito ang halaga ng exponent ay hindi , ngunit . Kaya, kung ang exponent ay tumaas ng , ang kabuuang halaga ng numero ay doble.10x
2x
1
MIN_EXPONENT == -1024
, na nangangahulugang , na tinatayang katumbas ng2-1024
10-308
At siyempre, ang Double
klase ay may mga kagiliw-giliw na pamamaraan:
Paraan | Paglalarawan |
---|---|
|
Nagbabalik ng string na hexadecimal na representasyon ng numero |
|
Sinusuri kung ang naipasa na numero ay infinity. |
|
Tinitingnan kung ang naipasa na numero ayNaN |
|
Binabalot ang ipinasa double sa isang Double bagay |
|
Ibinabalik ang numerong nakuha mula sa naipasa na string |
Kapansin-pansin, mayroong isang isInfinite()
paraan na nagbabalik true
kung ang naipasa na numero ay positibo o negatibong infinity.
Ang isNaN()
pamamaraan ay magkatulad — sinusuri nito kung ang naipasa na numero ay NaN
( Not-a-Number , isang espesyal na pare-pareho na nagsasaad ng hindi natukoy na halaga).
3. Character
klase
Ang Character
klase ay kawili-wili lalo na para sa malaking bilang ng mga static na pamamaraan ng utility na nagbibigay-daan sa iyong suriin kung ang mga character ay nabibilang sa iba't ibang kategorya.
Mga halimbawa
Paraan | Paglalarawan |
---|---|
|
Sinusuri kung ang isang karakter ay isang alpabetikong karakter |
|
Sinusuri kung ang karakter ay isang titik |
|
Sinusuri kung ang character ay isang digit |
|
Sinusuri kung ang character ay isang puwang, isang line break, o isang page break (mga code: 12, 13, 14) |
|
Sinusuri kung ang character ay whitespace: isang espasyo, tab, atbp. |
|
Tinitingnan kung lowercase ang character |
|
Sinusuri kung ang character ay uppercase |
|
Kino-convert ang character sa lowercase |
|
Kino-convert ang character sa uppercase |
Ang isang tampok ng mga pamamaraang ito ay gumagana ang mga ito sa lahat ng kilalang alpabeto: Ang mga numerong Arabe ay inuri bilang mga digit, atbp.
4. Boolean
klase
Ang Boolean
uri ay halos kapareho ng boolean
uri. Ang mga pagkakaiba ay minimal.
Sa ibaba ay nagpapakita kami ng pinasimpleng bersyon ng Boolean
klase:
Code | Paglalarawan |
---|---|
|
Constants: TRUE и FALSE Variable Boolean class constructor Ang pamamaraan ay nagbabalik ng halaga ng panloob na variable Ang static na paraan na ito ay nagko-convert true sa TRUE at false sa FALSE . |
Ang Boolean
uri ay may dalawang constants (dalawang field):
Constants ng klase | Counterpart para sa uri ng boolean | Paglalarawan |
---|---|---|
|
|
totoo |
|
|
mali |
Maaari kang makipagtulungan sa kanila sa parehong paraan na nagtatrabaho ka sa boolean
uri:
Code | Tandaan |
---|---|
|
Ang Boolean klase ay ang tanging klase na maaaring isulat sa loob ng isang kundisyon |
|
Ang lahat ng tatlong variable ay katumbas ng true /TRUE |
|
Ang mga Constant ay maaaring ihambing gamit ang pareho equals at == ito ay gagana rin. |
Gumagana ang autoboxing dito. Nangangahulugan iyon na maaari mong gamitin ang ganitong uri sa parehong paraan tulad ng boolean
uri — walang mga pitfalls na dapat bantayan.
Paano ito nakasulat | Paano ito gumagana |
---|---|
|
|
At narito ang isang paghahambing ng boolean
at Boolean
mga uri:
boolean a = true;
Boolean b = true; // b will be equal to Boolean.TRUE
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // true (compared by reference, but they point to the same object)
Kung talagang kailangan mo ng isang independiyenteng Boolean
bagay, kailangan mong likhain ito nang tahasan:
boolean a = true;
Boolean b = new Boolean(true); // New Boolean object
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // false (compared by reference, and they point to different objects)
Isa pang halimbawa, kung saan gagamit tayo ng Boolean
loob ng isang if
:
Code | Tandaan |
---|---|
|
Ito ay mag-compile at gagana |
Ito ay mag-compile, ngunit hindi ito gagana!
Code | Tandaan |
---|---|
|
Error . Ang linyang ito ay magbibigay ng exception |
5. Pag-cache ng mga halaga sa panahon ng autoboxing
Mayroong ilang mga pitfalls na nauugnay sa mga uri ng integer wrapper.
Tulad ng alam mo na, kung ihahambing natin ang isang int
at isang Integer
, ang Integer
ay na-convert sa isang int
:
Paano ito nakasulat | Paano ito gumagana |
---|---|
|
|
Kung ihahambing mo ang dalawang Integer
bagay sa isa't isa, hindi sila mako-convert sa int
s:
Code | Output ng console |
---|---|
|
|
a == c
at , ngunit , dahil kapag nagkukumpara tayo at naghahambing tayo ng mga sanggunian. Na kung ano talaga ang inaasahan natin.b == c
a != b
a
b
Sorpresa
Ngunit kung papalitan natin 500
ng 100
, magkakaroon tayo ng ganap na kakaibang resulta:
Code | Output ng console |
---|---|
|
|
Ang isyu dito ay ang isang bagong Integer
bagay ay hindi palaging aktwal na nilikha sa panahon ng autoboxing . Ang mga bagay ay naka-cache para sa mga halaga -128
sa pamamagitan ng 127
inclusive.
Ang Integer
klase ay may nakatagong array na nag-iimbak ng mga bagay: Integer(-128)
, Integer(-127)
, ... Integer(126)
,Integer(127)
Kung magsulat ka Integer x = 128
, pagkatapos ay ang proseso ng autoboxing ay lumilikha ng isang bagong bagay, ngunit kung ikaw ay sumulat Integer x = 127
, pagkatapos ay ang proseso ng autoboxing ay kinukuha ang umiiral na bagay mula sa cache (mula sa array).
Kung hindi mo nais na ang Integer
bagay ay magmula sa cache, kakailanganin mong likhain ito nang tahasan sa pamamagitan ng pagsulat:Integer x = new Integer(127);
Ang lahat ng uri ng wrapper ay may ganitong cache: Integer
, Long
, Byte
, Short
, Boolean
. Para sa Boolean
uri, ang mga ito TRUE
at FALSE
mga halaga ay parehong pare-pareho, kaya mahalagang naka-cache din ang mga ito.
GO TO FULL VERSION