JavaRush /Java блогы /Random-KK /Java Integer Class Guide

Java Integer Class Guide

Топта жарияланған
Бұл мақалада Integer класы туралы айтатын боламыз. Мына сұрақтарды қарастырайық:
  • орауыш сыныптары дегеніміз не;
  • примитивтерді автоорау/орауы;
  • Integer класының жұмысы, оның әдістері мен тұрақтылары.
Java бүтін класы бойынша оқу құралы - 1

Қарапайым типтердің орауыш кластары

Өздеріңіз білетіндей, Java-да екі блокқа бөлуге болатын әртүрлі деректер түрлері бар:
  • қарапайым;
  • анықтама.
Java тілінде бірнеше қарапайым деректер түрлері бар:
  • бүтін сандар – byte, қысқа, int, ұзын;
  • өзгермелі нүктелі сандар (нақты) - өзгермелі, қос;
  • логикалық деректер түрі – логикалық;
  • таңба деректер түрі - char.
Әрбір қарабайыр деректер түрінің өз орауыш класы болады. Қарапайым кіші інісін Java нысанына орап алатын анықтамалық деректер түрі. Төменде қарабайыр деректер түрлері және олардың сәйкес орауыш сыныптары берілген:
Қарапайым тип Қаптама класы
byte Байт
қысқа Қысқа
int бүтін сан
ұзақ Ұзақ
жүзу Қалқымалы
қос Қосарлы
логикалық Логикалық
таңба Кейіпкер
Практикалық мағынада примитивтер мен олардың орауыш сыныптары көп ортақ. Көптеген операциялар бірдей орындалады. Дегенмен, орауыш кластары примитивтерге тән емес бірқатар сипаттамаларға ие. Біріншіден, сыныптар бар: орауыш сыныптарымен жұмыс істегенде, біз an objectілермен жұмыс істейміз. Екіншіден (бірінші нүктеден кейінгі барлық нәрсе), бұл нысандар нөл болуы мүмкін. Үшіншіден, орауыш сыныптары белгілі бір деректер түрімен жұмыс істеуді жеңілдететін бірқатар тұрақтылар мен әдістерді қамтамасыз етеді. Бұл мақалада Integer класымен жұмыс істеуді егжей-тегжейлі қарастырамыз.

Бүтін сан

Integer класы int қарабайыр типті орауыш класы болып табылады. Бұл класс int типті бір өрісті қамтиды. Орауыш класы ретінде Integer int-пен жұмыс істеудің әртүрлі әдістерін, сонымен қатар int-ті Жолға және Жолды int-ге түрлендірудің бірқатар әдістерін ұсынады. Төменде біз сыныппен жұмыс істеудің әртүрлі мысалдарын қарастырамыз. Шығармашылықтан бастайық. Ең жиі қолданылатын (және пайдалану оңай) келесі жасау опциясы болып табылады:
Integer a = 3;
Яғни, бұл жағдайда Integer айнымалысының инициализациясы int айнымалысының инициализациясына ұқсас. Сонымен қатар, Integer айнымалысы int айнымалысының мәнімен инициализациялануы мүмкін:
int i = 5;
Integer x = i;
System.out.println(x); // 5
Жоғарыда көрсетілген жағдайда автобуыптау жанама түрде орын алады. Бұл туралы төменде толығырақ айтатын боламыз. Жоғарыда аталған инициализация опцияларына қоса, Integer айнымалысы конструктор мен new кілт сөзін пайдаланып, басқа нысандар сияқты жасалуы мүмкін:
Integer x = new Integer(25);
System.out.println(x);
Дегенмен, жазу ұзағырақ, ал оқу үшін ұзағырақ уақыт қажет, сондықтан бұл опция ең аз таралған. Integer айнымалыларымен барлығын жасауға болады, оны int айнымалыларымен жасауға болады. Олар болуы мүмкін:
Бүктеу

Integer a = 6;
Integer b = 2;
Integer c = a + b;
System.out.println(c); // 8
Алу

Integer a = 6;
Integer b = 2;
Integer c = a - b;
System.out.println(c); // 4
Көбейту

Integer a = 6;
Integer b = 2;
Integer c = a * b;
System.out.println(c); // 12
Бөлу

Integer a = 6;
Integer b = 2;
Integer c = a / b;
System.out.println(c); // 3
Көбейту

Integer a = 6;
a++;
++a;
System.out.println(a); // 8
Азайту

Integer a = 6;
a--;
--a;
System.out.println(a); // 4
Дегенмен, мұның бәріне мұқият болу керек және Integer анықтамалық деректер типі екенін есте сақтау керек және бұл түрдегі айнымалы нөл болуы мүмкін. Бұл жағдайда (айнымалы нөл болса), арифметикалық амалдардан (және нөл жақсы нәтиже бермейтін кез келген басқа) бас тартқан дұрыс. Міне, мысал:
Integer a = null;
Integer b = a + 1; // Здесь мы упадем с "Exception in thread "main" java.lang.NullPointerException"
System.out.println(b);
Салыстыру операцияларының көпшілігі 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);
Шығару:

false
false
true
true
Екі бүтін айнымалыны салыстыру операциясы ерекше. Мұндағы мәселе Integer анықтамалық деректер түрі болып табылады және оның айнымалылары мәндердің өздері (нысандар) емес, мәндерге сілтемелерді сақтайды. Бұл фактінің көріністерін келесі code фрагментін орындау кезінде байқауға болады:
Integer a = 1;
Integer b = 1;
Integer c = new Integer(1);

System.out.println(a == b); // true
System.out.println(a == c); // false
Бірінші теңдіктің нәтижесі ақиқат, екіншісі жалған болады. Бұл бірінші жағдайда бір нысанға сілтемелерді сақтайтын екі айнымалыны («a» және «b») салыстыратындықтан болады. Ал екінші жағдайда біз екі түрлі нысанға сілтеме жасайтын екі айнымалыны салыстырамыз («c» айнымалысын жасағанда біз жаңа нысан жасадық). Тағы бір қызықты мысал келтірейік:
Integer a = 1;
Integer b = 1;

Integer x = 2020;
Integer y = 2020;

System.out.println(a == b); // true
System.out.println(x == y); // false
Көріп отырғанымыздай, бірінші салыстырудың нәтижесі ақиқат, ал екіншісінің нәтижесі жалған. Мұның бәрі кэштеу туралы. -128-ден 127-ге дейінгі аралықтағы барлық бүтін сандар (бұл мәндерді теңшеуге болады) кэштелген. Сонымен, біз жаңа айнымалыны жасап, оған -128 және 127 арасындағы бүтін мәнді тағайындағанда, біз жаңа нысан жасамаймыз, керісінше айнымалыға кэште бұрыннан жасалған нысанға сілтеме тағайындаймыз. Енді осы шындықты біле тұра, жоғарыдағы мысал соншалықты тылсым болып көрінбейді. a және b айнымалылары бір нысанға – кэштен алынған нысанға сілтеме жасайды. Ал x және y айнымалыларын инициализациялау кезінде біз әр уақытта жаңа an object жасадық және бұл айнымалылар әртүрлі нысандарға сілтемелерді сақтайды. Өздеріңіз білетіндей, == операторы айнымалылардың мәндерін салыстырады, ал анықтамалық айнымалылардың мәндері сілтемелер болып табылады. Екі бүтін айнымалылар арасындағы теңдікті дәл тексеру үшін, теңдеу әдісін пайдалану керек (ол қаншалықты тривиальды көрінсе де). Жоғарыдағы мысалды қайта жазайық:
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

Integer автоматты буып-түю және орауы

Автоматты орау және орауыштан шығару дегеніміз не? Жаңа бүтін айнымалы мәндерді жасау кезінде біз келесі конструкцияны қолдандық:
Integer a = 2020;
Осылайша біз жаңа негізгі операторды қолданбай жаңа нысанды жасадық. Бұл int қарабайыр типті автопакинг механизмінің арқасында мүмкін болды. Кері proceduresа Integer анықтамалық айнымалы мәніне қарабайыр int айнымалысын тағайындағанда орын алады:
Integer a = 2020;
int x = a;
Бұл жағдайда біз қарабайыр айнымалыға сілтеме тағайындаған сияқтымыз (атап айтқанда, нысанға сілтеме «a» айнымалысының мәні). Бірақ шын мәнінде, автоматты түрде ашу механизмінің арқасында 2020 мәні «x» айнымалысына жазылды. Автоматты буып-түю/орау Java-да өте кең таралған құбылыс. Көбінесе бұл өздігінен болады, кейде тіпті бағдарламашы білмесе де. Бірақ сіз әлі де бұл құбылыс туралы білуіңіз керек. Бұл тақырып бойынша бізде Javarush туралы қызықты мақала бар .

Бүтін класс тұрақтылары

Integer класы әртүрлі тұрақтылар мен бүтін сандармен жұмыс істеу әдістерін ұсынады. Бұл бөлімде біз олардың кейбіреулерін тәжірибеде егжей-тегжейлі қарастырамыз. Тұрақтылардан бастайық. Төмендегі кесте барлық класс тұрақтыларын көрсетеді:
Костанта Сипаттама
SIZE int типі алатын екі таңбалы санау жүйесіндегі биттердің саны
БАЙТ int типі алатын екі таңбалы санау жүйесіндегі byteтардың саны
MAX_VALUE int түрі ұстай алатын ең үлкен мән
MIN_VALUE int түрі ұстай алатын ең аз мән
ТҮР int түрінен Class түріндегі нысанды қайтарады
Келесі codeты іске қосу арқылы барлық осы тұрақтылардың мәндерін қарастырайық:
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);
}
Нәтижесінде біз келесі нәтижені аламыз:

32
4
2147483647
-2147483648
int

Integer класының әдістері

Енді Integer класының ең көп қолданылатын әдістерін жылдам қарастырайық. Сонымен, «жоғарғылар» сандарды жолдан түрлендіру немесе жолды саннан түрлендіру әдістерімен басқарылады. Жолды санға түрлендіруден бастайық. Бұл мақсаттар үшін parseInt әдісі пайдаланылады , қолтаңба төменде:
  • 
    static int parseInt(String s)
Бұл әдіс жолды int түріне түрлендіреді. Бұл әдіс қалай жұмыс істейтінін көрсетейік:
int i = Integer.parseInt("10");
System.out.println(i); // 10
Егер түрлендіру мүмкін болмаса — мысалы, біз parseInt әдісіне сөз бердік — NumberFormatException жіберіледі. parseInt(String s) әдісінде шамадан тыс жүктелген бауырлас бар:
  • 
    static int parseInt(String s, int radix)
Бұл әдіс s параметрін int түріне түрлендіреді. radix параметрі s ішіндегі санның бастапқыда қай санау жүйесінде жазылғанын көрсетеді, оны int түріне түрлендіру керек. Төмендегі мысалдар:
System.out.println(Integer.parseInt("0011", 2)); // 3
System.out.println(Integer.parseInt("10", 8));   // 8
System.out.println(Integer.parseInt("F", 16));   // 15
parseInt әдістері int қарабайыр деректер түрін қайтарады. Бұл әдістердің аналогы бар - the valueOf әдісі . Бұл әдістің кейбір нұсқалары жай ғана parseInt деп аталады. parseInt-тен айырмашылығы, valueOf нәтижесі int емес, бүтін сан болады. Төменде осы әдістің барлық нұсқаларын және оның жұмыс істеу мысалын қарастырайық:
  • static Integer valueOf(int i) - мәні i болатын бүтін санды қайтарады;
  • static Integer valueOf(String s) - parseInt(String s) ұқсас, бірақ нәтиже Integer болады;
  • static Integer valueOf(String s, int radix) - parseInt(String s, int radix) сияқты, бірақ нәтиже 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
Жолды int/Integer түріне түрлендіруге мүмкіндік беретін әдістерді қарастырдық. Кері proceduresаға toString әдістері арқылы қол жеткізіледі . Кез келген Integer нысанында toString әдісін шақыруға және оның жолдық көрінісін алуға болады:
Integer x = 5;
System.out.println(x.toString()); // 5
Дегенмен, toString әдісі көбінесе an objectілерде жасырын түрде шақырылатындықтан (мысалы, нысанды басып шығару үшін консольге жіберу кезінде) бұл әдісті әзірлеушілер сирек қолданады. Сондай-ақ int параметрін қабылдайтын және оны жол көрінісіне түрлендіретін toString статикалық әдісі бар. Мысалы:
System.out.println(Integer.toString(5)); // 5
Дегенмен, статикалық емес toString әдісі сияқты, статикалық әдісті қолдану сирек кездеседі. 2 бүтін параметрді қабылдайтын toString статикалық әдісі қызықтырақ:
  • static String toString(int i, int radix) - i мәнін радикстік санау жүйесіндегі жол көрінісіне түрлендіреді.
Мысалы:
System.out.println(Integer.toString(5, 2)); // 101
Integer класында екі санның максимум/минимумын табудың бірнеше әдісі бар:
  • static int max(int ​​a, int b) берілген айнымалылар арасындағы ең үлкен мәнді қайтарады;
  • static int min(int a, int b) берілген айнымалылар арасындағы ең кіші мәнді қайтарады.
Мысалдар:
int x = 4;
int y = 40;

System.out.println(Integer.max(x,y)); // 40
System.out.println(Integer.min(x,y)); // 4

Қорытынды

Бұл мақалада біз Integer класын қарастырдық. Біз бұл қандай сынып және орауыш сыныптары туралы сөйлестік. Біз сыныпты практикалық тұрғыдан қарастырдық. Біз арифметикалық амалдардың мысалдарын, соның ішінде салыстыру операцияларын қарастырдық. Біз екі Integer айнымалысын салыстырудың қыр-сырын қарастырдық және кэштелген нысандар түсінігін қарастырдық. Қарапайым деректер түрлерін автоматты буып-түю/шығару құбылысын да атап өттік. Сонымен қатар, біз Integer класының кейбір әдістерін, сондай-ақ кейбір тұрақтыларды қарастыра алдық. Олар сандарды бір санау жүйесінен екінші санау жүйесіне ауыстыруға мысалдар келтірді.

Үй жұмысы

  1. Integer класының басқа қандай әдістері бар екенін зерттеңіз (оларды ресми құжаттамамен веб-сайтта оқуға болады ), түсініктемелерде сіз зерттеген әдістердің қайсысы (мақалада келтірілгендерді қоспағанда) сіздің ойыңызша ең пайдалы екенін жазыңыз ( сіз жиі пайдаланасыз). Сондай-ақ өз пікіріңіздің себептерін көрсетіңіз.

    PS Мұнда дұрыс жауаптар жоқ, бірақ бұл әрекет сізге сыныпты жақсырақ оқуға мүмкіндік береді.

  2. Материалды бекіту үшін шағын қарапайым есеп шығару.

    Бізде екі сан бар:

    1100001001 - екілік санау жүйесінде
    33332 - квинарлық санау жүйесінде

    Тек Integer класының әдістерін қолдана отырып, берілген екі санның максимумын анықтау керек, содан кейін үштік санау жүйесінде максималды және ең кіші мән арасындағы айырмашылықты көрсету керек.

  3. Мүмкін болатын бүтін санның максималды мәнін сегіздік санау жүйесіне түрлендіріңіз және алынған сандағы цифрлар санын көрсетіңіз (санды бағдарламалы түрде санаңыз).

Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION