- ano ang mga klase ng wrapper;
- autopacking/unpacking ng mga primitives;
- pagpapatakbo ng klase ng Integer, mga pamamaraan at mga constant nito.
Mga klase ng wrapper ng mga primitive na uri
Tulad ng alam mo, ang Java ay may iba't ibang uri ng data, na maaaring nahahati sa dalawang bloke:- primitive;
- sanggunian.
- integers - byte, maikli, int, mahaba;
- mga numero ng floating point (real) - lumutang, doble;
- lohikal na uri ng data - boolean;
- uri ng data ng character - char.
Primitive na uri | Klase ng wrapper |
---|---|
byte | Byte |
maikli | Maikli |
int | Integer |
mahaba | Mahaba |
lumutang | Lumutang |
doble | Doble |
boolean | Boolean |
char | karakter |
Ang Integer
Ang Integer class ay isang wrapper class ng primitive type int. Naglalaman ang klase na ito ng isang field ng uri ng int. Bilang isang klase ng wrapper, ang Integer ay nagbibigay ng iba't ibang mga pamamaraan para sa pagtatrabaho sa mga ints, pati na rin ang isang bilang ng mga pamamaraan para sa pag-convert ng int sa String at String sa int. Sa ibaba ay titingnan natin ang iba't ibang halimbawa ng pagtatrabaho sa klase. Magsimula tayo sa paglikha. Ang pinakakaraniwang ginagamit (at pinakamadaling gamitin) ay ang sumusunod na opsyon sa paggawa:
Integer a = 3;
Iyon ay, ang initialization ng isang Integer variable sa kasong ito ay katulad ng initialization ng isang int variable. Bukod dito, ang isang Integer variable ay maaaring masimulan sa halaga ng isang int variable:
int i = 5;
Integer x = i;
System.out.println(x); // 5
Sa kaso sa itaas, ang autopacking ay nangyayari nang tahasan. Pag-uusapan natin ang higit pa tungkol dito sa ibaba. Bilang karagdagan sa mga pagpipilian sa pagsisimula na nakalista sa itaas, ang isang variable na Integer ay maaaring malikha tulad ng iba pang mga bagay, gamit ang isang constructor at ang bagong keyword:
Integer x = new Integer(25);
System.out.println(x);
Gayunpaman, mas matagal ang pagsusulat at mas matagal ang pagbabasa, kaya ang opsyong ito ay hindi gaanong karaniwan. Magagawa mo ang lahat gamit ang mga variable na Integer na magagawa mo sa mga variable na int. Maaari silang maging:
Tiklupin |
|
Ibawas |
|
Paramihin |
|
Hatiin |
|
Pagtaas |
|
Pagbawas |
|
Integer a = null;
Integer b = a + 1; // Здесь мы упадем с "Exception in thread "main" java.lang.NullPointerException"
System.out.println(b);
Karamihan sa mga operasyon ng paghahambing ay isinasagawa sa parehong paraan tulad ng sa primitive na uri int:
Integer a = 1;
Integer b = 2;
System.out.println(a > b);
System.out.println(a >= b);
System.out.println(a < b);
System.out.println(a <= b);
Output:
false
false
true
true
Ang operasyon ng paghahambing ng dalawang Integer variable ay namumukod-tangi. At ang punto dito ay ang Integer ay isang uri ng data ng sanggunian, at ang mga variable nito ay nag-iimbak ng mga sanggunian sa mga halaga, at hindi ang mga halaga mismo (mga bagay). Ang mga pagpapakita ng katotohanang ito ay maaaring maobserbahan kapag isinasagawa ang sumusunod na fragment ng code:
Integer a = 1;
Integer b = 1;
Integer c = new Integer(1);
System.out.println(a == b); // true
System.out.println(a == c); // false
Ang resulta ng unang pagkakapantay-pantay ay magiging totoo, at ang pangalawa ay magiging mali. Nangyayari ito dahil sa unang kaso, naghahambing kami ng dalawang variable ("a" at "b") na nag-iimbak ng mga sanggunian sa parehong bagay. At sa pangalawang kaso, naghahambing kami ng dalawang variable na tumutukoy sa dalawang magkaibang mga bagay (kapag nilikha namin ang variable na "c" lumikha kami ng isang bagong bagay). Magbigay tayo ng isa pang kawili-wiling halimbawa:
Integer a = 1;
Integer b = 1;
Integer x = 2020;
Integer y = 2020;
System.out.println(a == b); // true
System.out.println(x == y); // false
Tulad ng nakikita natin, ang resulta ng unang paghahambing ay totoo, at ang resulta ng pangalawa ay mali. Ito ay tungkol sa pag-cache. Ang lahat ng mga integer sa hanay mula -128 hanggang 127 kasama (maaaring ipasadya ang mga halagang ito) ay naka-cache. Kaya kapag gumawa kami ng bagong variable at italaga ito ng isang integer na halaga sa pagitan ng -128 at 127, hindi kami gumagawa ng bagong object, ngunit sa halip ay nagtatalaga kami ng variable ng isang reference sa isang nilikha na object sa cache. Ngayon, alam ang katotohanang ito, ang halimbawa sa itaas ay hindi mukhang napakamistikal. Ang mga variable na a at b ay tumutukoy sa parehong bagay - isang bagay mula sa cache. At sa panahon ng pagsisimula ng mga variable na x at y, lumikha kami ng isang bagong bagay sa bawat oras, at ang mga variable na ito ay nag-imbak ng mga sanggunian sa iba't ibang mga bagay. At tulad ng alam mo, inihahambing ng operator ng == ang mga halaga ng mga variable, at ang mga halaga ng mga variable na sanggunian ay mga sanggunian. Upang tumpak na suriin ang pagkakapantay-pantay sa pagitan ng dalawang variable na Integer, dapat mong gamitin (gaano man ito kawalang-halaga) ang katumbas na paraan. Isulat muli natin ang halimbawa sa itaas:
Integer a = 1;
Integer b = 1;
Integer x = 2020;
Integer y = 2020;
System.out.println(a.equals(b)); // true
System.out.println(x.equals(y)); // true
Autopacking at pag-unpack ng Integer
Ano ang auto packing at unpacking? Kapag lumilikha ng mga bagong variable ng Integer, ginamit namin ang sumusunod na konstruksyon:Integer a = 2020;
Sa ganitong paraan lumikha kami ng bagong object nang hindi ginagamit ang bagong key operator. Posible ito salamat sa mekanismo ng autopacking ng primitive type int. Ang reverse procedure ay nangyayari kapag nagtatalaga ng primitive int variable sa value ng isang Integer reference variable:
Integer a = 2020;
int x = a;
Sa kasong ito, mukhang itinalaga namin ang reference (ibig sabihin, ang reference sa object ay ang halaga ng variable na "a") sa isang primitive variable. Ngunit sa katunayan, salamat sa mekanismo ng auto-unpacking, ang value na 2020 ay isinulat sa variable na "x". Ang auto-packing/unpacking ay isang pangkaraniwang phenomenon sa Java. Kadalasan ito ay nangyayari nang mag-isa, kung minsan kahit na walang kaalaman ng programmer. Ngunit kailangan mo pa ring malaman ang tungkol sa hindi pangkaraniwang bagay na ito. Mayroon kaming isang kawili-wiling artikulo sa paksang ito sa Javarush .
Integer class constants
Ang klase ng Integer ay nagbibigay ng iba't ibang mga constant at pamamaraan para sa pagtatrabaho sa mga integer. Sa seksyong ito, susuriin natin ang ilan sa mga ito sa pagsasanay. Magsimula tayo sa mga constants. Ipinapakita ng talahanayan sa ibaba ang lahat ng mga constant ng klase:Costanta | Paglalarawan |
---|---|
SIZE | Ang bilang ng mga bit sa dalawang-digit na sistema ng numero na inookupahan ng uri ng int |
BYTES | Ang bilang ng mga byte sa dalawang-digit na sistema ng numero na inookupahan ng uri ng int |
MAX_VALUE | Ang maximum na halaga na maaaring hawakan ng isang uri ng int |
MIN_VALUE | Ang pinakamababang halaga na maaaring hawakan ng isang uri ng int |
URI | Ibinabalik ang isang object ng uri ng Class mula sa uri ng int |
public static void main(String[] args) {
System.out.println(Integer.SIZE);
System.out.println(Integer.BYTES);
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(Integer.TYPE);
}
Bilang resulta, nakukuha namin ang sumusunod na output:
32
4
2147483647
-2147483648
int
Mga pamamaraan ng klase ng Integer
Ngayon tingnan natin ang mga pinakaginagamit na pamamaraan ng klase ng Integer. Kaya, ang mga "nangungunang" ay pinamumunuan ng mga pamamaraan para sa pag-convert ng isang numero mula sa isang string, o pag-convert ng isang string mula sa isang numero. Magsimula tayo sa pag-convert ng string sa isang numero. Ang parseInt na paraan ay ginagamit para sa mga layuning ito , ang lagda ay nasa ibaba:-
static int parseInt(String s)
int i = Integer.parseInt("10");
System.out.println(i); // 10
Kung hindi posible ang conversion—halimbawa, nagpasa kami ng isang salita sa parseInt na paraan—isang NumberFormatException ang ihahagis. Ang parseInt(String s) na paraan ay may sobrang kargang kapatid:
-
static int parseInt(String s, int radix)
System.out.println(Integer.parseInt("0011", 2)); // 3
System.out.println(Integer.parseInt("10", 8)); // 8
System.out.println(Integer.parseInt("F", 16)); // 15
Ang mga pamamaraan ng parseInt ay nagbabalik ng isang primitive na uri ng data int. Ang mga paraang ito ay may analogue - ang valueOf method . Ang ilang mga pagkakaiba-iba ng paraang ito ay tumawag lamang ng parseInt sa loob. Ang pagkakaiba mula sa parseInt ay ang resulta ng valueOf ay magiging isang Integer, hindi isang int. Isaalang-alang natin sa ibaba ang lahat ng mga opsyon para sa pamamaraang ito at isang halimbawa kung paano ito gumagana:
- static Integer valueOf(int i) - nagbabalik ng Integer na ang value ay i;
- static Integer valueOf(String s) - katulad ng parseInt(String s), ngunit ang resulta ay Integer;
- static Integer valueOf(String s, int radix) - katulad ng parseInt(String s, int radix), ngunit ang resulta ay Integer.
int a = 5;
Integer x = Integer.valueOf(a);
Integer y = Integer.valueOf("20");
Integer z = Integer.valueOf("20", 8);
System.out.println(x); // 5
System.out.println(y); // 20
System.out.println(z); // 16
Tiningnan namin ang mga pamamaraan na nagbibigay-daan sa iyong i-convert ang String sa int/Integer. Ang reverse procedure ay nakakamit gamit ang toString method . Maaari mong tawagan ang paraan ng toString sa anumang bagay na Integer at makuha ang representasyon ng string nito:
Integer x = 5;
System.out.println(x.toString()); // 5
Gayunpaman, dahil sa ang katunayan na ang paraan ng toString ay madalas na tinatawag na implicitly sa mga bagay (halimbawa, kapag nagpapadala ng isang bagay sa console para sa pag-print), ang paraang ito ay bihirang ginagamit nang tahasan ng mga developer. Mayroon ding static na paraan saString, na kumukuha ng int parameter at kino-convert ito sa isang representasyon ng string. Halimbawa:
System.out.println(Integer.toString(5)); // 5
Gayunpaman, tulad ng non-static na paraan ng toString, ang paggamit ng isang static na paraan ay tahasang bihira. Ang mas kawili-wiling ay ang static na paraan saString, na tumatagal ng 2 integer na mga parameter:
- static String toString(int i, int radix) - iko-convert ang i sa isang representasyon ng string sa sistema ng radix number.
System.out.println(Integer.toString(5, 2)); // 101
Ang klase ng Integer ay may ilang mga pamamaraan para sa paghahanap ng maximum/minimum ng dalawang numero:
- static int max(int a, int b) ay magbabalik ng pinakamalaking halaga sa mga naipasa na variable;
- static int min(int a, int b) ay magbabalik ng pinakamaliit na halaga sa mga naipasa na variable.
int x = 4;
int y = 40;
System.out.println(Integer.max(x,y)); // 40
System.out.println(Integer.min(x,y)); // 4
Konklusyon
Sa artikulong ito, tiningnan namin ang klase ng Integer. Napag-usapan namin kung anong klase ito at kung ano ang mga klase ng wrapper. Tiningnan namin ang klase mula sa praktikal na pananaw. Tumingin kami sa mga halimbawa ng mga pagpapatakbo ng aritmetika, kabilang ang mga pagpapatakbo ng paghahambing. Tiningnan namin ang mga intricacies ng paghahambing ng dalawang Integer variable, at sinuri ang konsepto ng mga naka-cache na bagay. Binanggit din namin ang phenomenon ng auto-packing/unpacking ng mga primitive na uri ng data. Bilang karagdagan, nagawa naming tingnan ang ilang mga pamamaraan ng klase ng Integer, pati na rin ang ilang mga constant. Nagbigay sila ng mga halimbawa ng pag-convert ng mga numero mula sa isang sistema ng numero patungo sa isa pa.Takdang aralin
-
Pag-aralan kung ano ang iba pang mga pamamaraan ng klase ng Integer (maaari mong pag-aralan ang mga ito sa website na may opisyal na dokumentasyon ), isulat sa mga komento kung alin sa mga pamamaraan na iyong pinag-aralan (hindi kasama ang mga ibinigay sa artikulo) ay pinaka-kapaki-pakinabang sa iyong opinyon ( gagamitin mo nang madalas). At magbigay din ng mga dahilan para sa iyong opinyon.
PS Walang tamang sagot dito, ngunit ang aktibidad na ito ay magbibigay-daan sa iyo na mas mapag-aralan ang klase.
-
Lutasin ang isang maliit na simpleng problema upang pagsama-samahin ang materyal.
Mayroon kaming dalawang numero:
1100001001 - sa binary number system
33332 - sa quinary number systemIto ay kinakailangan, gamit lamang ang mga pamamaraan ng klase ng Integer, upang matukoy ang maximum sa dalawang ibinigay na mga numero, at pagkatapos ay ipakita ang pagkakaiba sa pagitan ng maximum at minimum na halaga sa ternary number system.
-
I-convert ang maximum na posibleng halaga ng Integer sa octal number system at ipakita ang bilang ng mga digit sa resultang numero (bilangin ang numero sa programmatically).
GO TO FULL VERSION