1. Integerklase
Integeray 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 Integerklase ay may dalawang field na naglalaman ng maximum at minimum na posibleng mga halaga ng inturi:
| Patlang | Paglalarawan |
|---|---|
|
Pinakamataas na posibleng halaga ng inturi |
|
Pinakamababang posibleng halaga ng inturi |
Minsan gusto mong italaga ang pinakamaliit o pinakamalaking posibleng inthalaga 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 Integerklase 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 intsa isang Integerbagay |
|
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. Doubleklase
Sa pangkalahatan, ang Doubleklase ay katulad ng Integerklase, tanging ito ay bumabalot ng isang doublekaysa sa isang int. Mayroon din itong mga larangan at pamamaraan na magiging interesante sa atin. Isaalang-alang ang ilan sa mga ito:
Ang Doubleklase 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 doubleuri |
|
Pinakamataas na posibleng halaga ng doubleuri |
Infinity
Kung hahatiin mo -1.0sa 0.0, makakakuha ka ng negatibong infinity. Kung hahatiin mo 1.0sa 0.0, makakakuha ka ng positibong infinity. Hindi lamang maaari mong hatiin ang isang doublesa 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.10x2x1
MIN_EXPONENT == -1024, na nangangahulugang , na tinatayang katumbas ng2-102410-308
At siyempre, ang Doubleklase 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 doublesa isang Doublebagay |
|
Ibinabalik ang numerong nakuha mula sa naipasa na string |
Kapansin-pansin, mayroong isang isInfinite()paraan na nagbabalik truekung 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. Characterklase
Ang Characterklase 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. Booleanklase
Ang Booleanuri ay halos kapareho ng booleanuri. Ang mga pagkakaiba ay minimal.
Sa ibaba ay nagpapakita kami ng pinasimpleng bersyon ng Booleanklase:
| Code | Paglalarawan |
|---|---|
|
Constants: TRUEи FALSE Variable Booleanclass constructor Ang pamamaraan ay nagbabalik ng halaga ng panloob na variable Ang static na paraan na ito ay nagko-convert truesa TRUEat falsesa FALSE. |
Ang Booleanuri 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 booleanuri:
| Code | Tandaan |
|---|---|
|
Ang Booleanklase 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 equalsat == ito ay gagana rin. |
Gumagana ang autoboxing dito. Nangangahulugan iyon na maaari mong gamitin ang ganitong uri sa parehong paraan tulad ng booleanuri — walang mga pitfalls na dapat bantayan.
| Paano ito nakasulat | Paano ito gumagana |
|---|---|
|
|
At narito ang isang paghahambing ng booleanat Booleanmga 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 Booleanbagay, 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 Booleanloob 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 intat isang Integer, ang Integeray na-convert sa isang int:
| Paano ito nakasulat | Paano ito gumagana |
|---|---|
|
|
Kung ihahambing mo ang dalawang Integerbagay sa isa't isa, hindi sila mako-convert sa ints:
| Code | Output ng console |
|---|---|
|
|
a == cat , ngunit , dahil kapag nagkukumpara tayo at naghahambing tayo ng mga sanggunian. Na kung ano talaga ang inaasahan natin.b == ca != bab
Sorpresa
Ngunit kung papalitan natin 500ng 100, magkakaroon tayo ng ganap na kakaibang resulta:
| Code | Output ng console |
|---|---|
|
|
Ang isyu dito ay ang isang bagong Integerbagay ay hindi palaging aktwal na nilikha sa panahon ng autoboxing . Ang mga bagay ay naka-cache para sa mga halaga -128sa pamamagitan ng 127inclusive.
Ang Integerklase 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 Integerbagay 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 Booleanuri, ang mga ito TRUEat FALSEmga halaga ay parehong pare-pareho, kaya mahalagang naka-cache din ang mga ito.
GO TO FULL VERSION