JavaRush /Блоги Java /Random-TG /Дастури синфи Java Integer

Дастури синфи Java Integer

Дар гурӯҳ нашр шудааст
Дар ин мақола мо дар бораи синфи Integer гап мезанем. Биёед ин саволҳоро баррасӣ кунем:
  • синфҳои бастабандӣ чист;
  • ба таври худкор бастабандӣ / кушодани ибтидоӣ;
  • амалиёти синфи Integer, усулҳо ва константаҳои он.
Дарси Java Синфи Integer - 1

Синфҳои бастабандии навъҳои ибтидоӣ

Тавре ки шумо медонед, Java дорои намудҳои гуногуни маълумот мебошад, ки онҳоро ба ду блок тақсим кардан мумкин аст:
  • ибтидоӣ;
  • истинод.
Дар Java якчанд намуди маълумоти ибтидоӣ мавҷуданд:
  • ададҳои бутун – byte, кӯтоҳ, int, long;
  • рақамҳои шинокунандаи нуқтаи шинокунанда (воқеӣ) - шинокунанда, дучандон;
  • навъи додаҳои мантиқӣ - булӣ;
  • навъи додаҳои аломат - char.
Ҳар як намуди маълумотҳои ибтидоӣ дорои синфи печони худ мебошад. Навъи додаҳои истинод, ки бародари хурди ибтидоии худро дар an objectи Java мепӯшонад. Дар зер навъҳои ибтидоии додаҳо ва синфҳои печонидани мувофиқи онҳо мавҷуданд:
Навъи ибтидоӣ Сарпӯши синф
byte Байт
кӯтоҳ Кӯтоҳ
int Бутун
дароз дароз
шино кардан шино кардан
дучанд Дучандон
булӣ Булӣ
char Характер
Ба маънои амалӣ, примитивҳо ва синфҳои печонидани онҳо умумияти зиёд доранд. Аксарияти амалиётҳо якхела иҷро карда мешаванд. Аммо, синфҳои печанда дорои як қатор хусусиятҳое мебошанд, ки хоси ибтидоӣ нестанд. Якум, синфҳо вуҷуд доранд: ҳангоми кор бо синфҳои печанда, мо бо an objectҳо кор мекунем. Дуюм (ҳар он чизе, ки аз нуқтаи якум бармеояд), ин an objectҳо метавонанд сифр бошанд. Сеюм, синфҳои парпечкунанда як қатор константаҳо ва усулҳоро таъмин мекунанд, ки кор бо як навъи додаҳоро осон мекунанд. Дар ин мақола мо кор бо синфи Integer муфассалтар дида мебароем.

Бутун _

Синфи Integer як синфи бастабандии навъи ибтидоӣ int мебошад. Ин синф майдони ягонаи навъи int дорад. Ҳамчун синфи печанда, Integer усулҳои гуногунро барои кор бо ints, инчунин як қатор усулҳои табдил додани int ба String ва String ба int пешниҳод мекунад. Дар зер мо мисолхои гуногуни кор бо синфро дида мебароем. Биёед аз офариниш оғоз кунем. Аз ҳама маъмултарин (ва осонтарин истифода) ин варианти эҷоди зерин аст:
Integer a = 3;
Яъне, ибтидосозии як тағирёбандаи Integer дар ин ҳолат ба оғозкунии тағирёбандаи int монанд аст. Ғайр аз он, як тағирёбандаи Integer метавонад бо арзиши тағирёбандаи int оғоз карда шавад:
int i = 5;
Integer x = i;
System.out.println(x); // 5
Дар ҳолати боло, автоматӣ ба таври ғайримустақим рух медиҳад. Мо дар зер дар бораи он бештар сӯҳбат хоҳем кард. Илова ба имконоти оғозкунии дар боло номбаршуда, тағирёбандаи Integerро метавон мисли an objectҳои дигар бо истифода аз созанда ва калимаи нав эҷод кард:
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 як навъи маълумот аст ва тағирёбандаҳои он истинодҳоро ба арзишҳо нигоҳ медоранд, на худи арзишҳо (an objectҳо). Зуҳуроти ин далелро ҳангоми иҷрои фрагменти 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"), ки истинодҳоро ба як an object нигоҳ медоранд. Ва дар ҳолати дуюм, мо ду тағирёбандаро муқоиса мекунем, ки ба ду an objectи гуногун тааллуқ доранд (ҳангоми сохтани тағирёбандаи “c” мо an objectи нав сохтем). Боз як мисоли ҷолиб меорем:
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 таъин мекунем, мо an objectи нав намесозем, балки ба тағирёбанда истинод ба an objectи аллакай дар кэш сохташударо таъин мекунем. Ҳоло, бо донистани ин далел, мисоли дар боло овардашуда он қадар асроромез ба назар намерасад. Тағйирёбандаҳои a ва b ба як an object - an object аз кэш ишора мекунанд. Ва ҳангоми оғоз кардани тағирёбандаҳои x ва y, мо ҳар дафъа як an objectи нав эҷод мекардем ва ин тағирёбандаҳо истинодҳоро ба 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, мо сохтори зеринро истифода бурдем:
Integer a = 2020;
Бо ин роҳ мо an objectи навро бидуни истифодаи оператори нави калидӣ сохтем. Ин ба шарофати механизми autopacking навъи ибтидоӣ int имконпазир аст. Тартиби баръакс ҳангоми таъин кардани тағирёбандаи ибтидоии int ба арзиши тағирёбандаи истинод ба Integer сурат мегирад:
Integer a = 2020;
int x = a;
Дар ин ҳолат, ба назар чунин мерасад, ки мо истинодро (яъне истинод ба an object арзиши тағирёбандаи "a" аст) ба тағирёбандаи ибтидоӣ таъин кардаем. Аммо дар асл, ба шарофати механизми кушодани худкор, арзиши 2020 ба тағирёбандаи "x" навишта шудааст.Бастани худкор/кушодакунӣ як падидаи хеле маъмул дар Java аст. Аксар вақт он худ аз худ, баъзан ҳатто бе огоҳии барномасоз рӯй медиҳад. Аммо шумо ба ҳар ҳол бояд дар бораи ин падида донед. Мо як мақолаи ҷолиб дар бораи ин мавзӯъ дар Javarush дорем .

Константаҳои синфи бутун

Синфи Integer константаҳо ва усулҳои гуногунро барои кор бо ададҳои бутун таъмин мекунад. Дар ин бахш мо баъзе аз онҳоро дар амал дида бароем. Биёед бо константаҳо оғоз кунем. Дар ҷадвали зер ҳамаи константаҳои синфӣ нишон дода шудаанд:
Костанта Тавсифи
андоза Миқдори битҳо дар системаи шумораҳои дурақама, ки навъи int ишғол мекунад
БАЙТ Миқдори byteҳо дар системаи шумораҳои дурақама, ки навъи int ишғол мекунад
MAX_VALUE Арзиши максималие, ки навъи int метавонад нигоҳ дошта бошад
MIN_VALUE Арзиши ҳадди ақал, ки навъи int метавонад нигоҳ дошта бошад
TYPE Объекти навъи Class аз навъи 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);
}
Дар натиҷа, мо натиҷаи зеринро ба даст меорем:

32
4
2147483647
-2147483648
int

Усулҳои синфи Integer

Акнун биёед зуд ба усулҳои бештар истифодашавандаи синфи Integer назар андозем. Ҳамин тариқ, "боло" бо усулҳои табдил додани адад аз сатр ё табдил додани сатр аз адад сарварӣ мекунанд. Биёед бо табдил додани сатр ба адад оғоз кунем. Усули parseInt барои ин мақсадҳо истифода мешавад , имзо дар зер аст:
  • 
    static int parseInt(String s)
Ин усул String-ро ба 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 бармегардонанд. Ин усулҳо аналогӣ доранд - усули valueOf . Баъзе вариантҳои ин усул танҳо parseInt-ро дар дохor худ даъват мекунанд. Фарқият аз 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), аммо натиҷа бутунӣ хоҳад буд.
Мисолҳо:
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
Мо усулҳоеро дида баромадем, ки ба шумо имкон медиҳанд String ба int/Integer табдил диҳед. Тартиби баръакс бо истифода аз усулҳои toString анҷом дода мешавад . Шумо метавонед ба усули toString дар ҳама гуна an objectи Integer занг занед ва тасвири сатри онро гиред:
Integer x = 5;
System.out.println(x.toString()); // 5
Бо вуҷуди ин, аз сабаби он, ки усули toString аксар вақт дар an objectҳо номида мешавад (масалан, ҳангоми фиристодани an object ба консол барои чоп), ин усул аз ҷониби таҳиягарон хеле кам истифода мешавад. Инчунин усули статикии toString вуҷуд дорад, ки параметри int-ро гирифта, онро ба намоиши сатр табдил медиҳад. Барои намуна:
System.out.println(Integer.toString(5)); // 5
Аммо, ба монанди усули ғайри статикии toString, истифодаи усули статикӣ ба таври возеҳ кам аст. Ҷолибтар аз ҳама усули статикии toString аст, ки 2 параметри бутунро мегирад:
  • 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 назар кардем. Мо дар бораи он ки ин чӣ гуна синф аст ва кадом синфҳои бастабандӣ сӯҳбат кардем. Мо ба синф аз нуктаи назари амалй назар кардем. Мо мисолҳои амалҳои арифметикӣ, аз ҷумла амалиёти муқоисаро дида баромадем. Мо нозукиҳои муқоисаи ду тағирёбандаи бутунро дида баромадем ва мафҳуми an objectҳои кэшро баррасӣ кардем. Мо инчунин падидаи бастабандии худкор / кушодани намудҳои маълумоти ибтидоиро зикр кардем. Илова бар ин, мо тавонистем ба баъзе усулҳои синфи Integer, инчунин баъзе доимӣ назар андозем. Онхо дар бораи аз як системаи шумора ба системаи дигар гузарондани ададхо мисолхо оварданд.

Вазифаи хонагӣ

  1. Омӯзед, ки кадом усулҳои дигари синфи Integer мавҷуданд (шумо метавонед онҳоро дар вебсайт бо ҳуҷҷатҳои расмӣ омӯзед ), дар шарҳҳо нависед, ки кадоме аз усулҳои омӯхтаатон (ба истиснои усулҳои дар мақола овардашуда) ба назари шумо муфидтар аст ( аз ҷониби шумо бештар истифода мешавад). Ва инчунин сабабҳои фикри худро пешниҳод кунед.

    PS Дар ин ҷо ҷавобҳои дуруст вуҷуд надоранд, аммо ин фаъолият ба шумо имкон медиҳад, ки синфро беҳтар омӯзед.

  2. Барои муттаҳид кардани мавод як масъалаи оддӣ ҳал кунед.

    Мо ду рақам дорем:

    1100001001 - дар системаи шумориши дуӣ
    33332 - дар системаи шумориши чорӣ

    Зарур аст, ки танҳо бо истифода аз усулҳои синфи Integer максимумро дар байни ду адади додашуда муайян намуда, баъд фарқияти байни қиммати максималӣ ва минималиро дар системаи шумориши сегона нишон диҳед.

  3. Қимати максималии имконпазирро ба системаи ҳисобкунии ҳаштсола табдил диҳед ва шумораи рақамҳоро дар адади натиҷавӣ нишон диҳед (рақамро ба таври барномавӣ ҳисоб кунед).

Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION