- синфҳои бастабандӣ чист;
- ба таври худкор бастабандӣ / кушодани ибтидоӣ;
- амалиёти синфи Integer, усулҳо ва константаҳои он.
Синфҳои бастабандии навъҳои ибтидоӣ
Тавре ки шумо медонед, Java дорои намудҳои гуногуни маълумот мебошад, ки онҳоро ба ду блок тақсим кардан мумкин аст:- ибтидоӣ;
- истинод.
- ададҳои бутун – byte, кӯтоҳ, int, long;
- рақамҳои шинокунандаи нуқтаи шинокунанда (воқеӣ) - шинокунанда, дучандон;
- навъи додаҳои мантиқӣ - булӣ;
- навъи додаҳои аломат - char.
Навъи ибтидоӣ | Сарпӯши синф |
---|---|
byte | Байт |
кӯтоҳ | Кӯтоҳ |
int | Бутун |
дароз | дароз |
шино кардан | шино кардан |
дучанд | Дучандон |
булӣ | Булӣ |
char | Характер |
Бутун _
Синфи 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 = 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)
int i = Integer.parseInt("10");
System.out.println(i); // 10
Агар табдилдиҳӣ ғайриимкон бошад - масалан, мо калимаро ба усули parseInt интиқол додем - NumberFormatException партофта мешавад. Усули parseInt(String s) як бародари изофабор дорад:
-
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
Усулҳои 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, инчунин баъзе доимӣ назар андозем. Онхо дар бораи аз як системаи шумора ба системаи дигар гузарондани ададхо мисолхо оварданд.Вазифаи хонагӣ
-
Омӯзед, ки кадом усулҳои дигари синфи Integer мавҷуданд (шумо метавонед онҳоро дар вебсайт бо ҳуҷҷатҳои расмӣ омӯзед ), дар шарҳҳо нависед, ки кадоме аз усулҳои омӯхтаатон (ба истиснои усулҳои дар мақола овардашуда) ба назари шумо муфидтар аст ( аз ҷониби шумо бештар истифода мешавад). Ва инчунин сабабҳои фикри худро пешниҳод кунед.
PS Дар ин ҷо ҷавобҳои дуруст вуҷуд надоранд, аммо ин фаъолият ба шумо имкон медиҳад, ки синфро беҳтар омӯзед.
-
Барои муттаҳид кардани мавод як масъалаи оддӣ ҳал кунед.
Мо ду рақам дорем:
1100001001 - дар системаи шумориши дуӣ
33332 - дар системаи шумориши чорӣЗарур аст, ки танҳо бо истифода аз усулҳои синфи Integer максимумро дар байни ду адади додашуда муайян намуда, баъд фарқияти байни қиммати максималӣ ва минималиро дар системаи шумориши сегона нишон диҳед.
-
Қимати максималии имконпазирро ба системаи ҳисобкунии ҳаштсола табдил диҳед ва шумораи рақамҳоро дар адади натиҷавӣ нишон диҳед (рақамро ба таври барномавӣ ҳисоб кунед).
GO TO FULL VERSION