Loading...

Берилгедердин типтери

    Javaнын негизги өзгөчөлүктөрүнүн бири - бул тилдин туруктуу типтештирилгени. Жана бул ар бир өзгөрмө жана туруктуу белгилүү бир типти билдирет жана бул тиби катуу аныкталган(строго типизированный) дегенди билдирет. Маалымат тиби өзгөрмө же константалардын маанилик диапазонун аныктайт.

 

Java-да өзгөрмөлөрдү түзүү үчүн колдонулган базалык маалымат типтерин карап көрөлү.

  • boolean: чыныгы же жалган маанини сактайт

boolean isActive = false;

boolean isAlive = true;

 

  • byte: -128ден 127ге чейинки бүтүн санды сактайт жана 1 байтты ээлейт

byte a = 3;

byte b = 8;

 

  • short: -32768ден 32767ге чейинки бүтүн санды сактайт жана 2 байтты ээлейт

short a = 3;

short b = 8;

 

  • int: -2147483648ден 2147483647ге чейинки бүтүн санды сактайт жана 4 байт ээлейт

int a = 4;

int b = 9;

 

  • long: -9 223 372 036 854 775 808ден 9 223 372 036 854 775 807ге чейинки бүтүн санды сактайт жана 8 байтты ээлейт

long a = 5;

long b = 10;

 

  • double: ±4.9*10-324дөн ±1,7976931348623157*10308ге чейинки ондук бөлчөк түрүндөгү санын сактайт жана 8 байтты ээлейт

double x = 8,5;

double у = 2,7;

 

Бөлчөк литералдарда ондук бөлгүч катары чекит колдонулат

  • float: -3,4*1038ден 3,4*1038ге чейинки ондук бөлчөк түрүндөгү санын сактайт жана 4 байт алат

float x = 8.5F;

floaty=2.7F;

 

  • char: UTF-16 коддоосунда бир символду сактайт жана 2 байт ээлейт, андыктан сакталган маанилердин диапазону 0дөн 65535ке чейин

 

Бул учурда, өзгөрмө анын түрүнө дал келген маанилерди гана ала алат. Эгерде өзгөрмө бүтүн сан түрү болсо, анда ал бөлчөк сандарды сактай албайт.

 

Бүтүн сандар

Бардык бүтүн литералдар, мисалы, 10, 4, -5 сандары int түрүнүн маанилери катары кабыл алынат, бирок биз бүтүн литералдарды башка бүтүн сан түрлөрүнө дайындай алабыз: byte, long, short. Бул учурда, Java автоматтык түрдө тиешелүү өзгөртүүлөрдү аткарат:

 

byte a = 1;

short b = 2;

long c = 2121;

Бирок, эгерде биз int түрү үчүн уруксат берилген маанилерден тышкары long түрүндөгү өзгөрмөгө өтө чоң санды ыйгаргыбыз келсе, анда компиляция убактысында катага туш болобуз:

long num = 2147483649;

Бул жерде 2147483649 саны long тиби үчүн жарактуу, бирок int түрү үчүн чектен тышкары. Жана бардык бүтүн маанилер int тибиндеги маанилер катары эсептелгендиктен, компилятор бизге катаны көрсөтөт. Маселени чечүү үчүн, санга l же L суффикс кошуу керек, бул сан long тибин берилгенин билдирет:

 

long num = 2147483649L;

Эреже катары, бүтүн өзгөрмөлөр үчүн маанилер ондук белгилер менен берилет, бирок биз башка белгилер системаларын колдоно алабыз. Мисалы:

int num111 = 0x6F; // Он алтылык система, саны 111

int num8 = 010; // Сегиздик системасы, саны 8

int num13 = 0b1101; // 2-арий системасы, саны 13

Он алтылык маанини көрсөтүү үчүн 0х символдордон кийин он алтылык форматтагы сан келет. Ушул сыяктуу эле сегиздик маани 0 символдон кийин, ал эми бинардык маани 0b символдон кийин көрсөтүлөт.

 

Бүтүн сандар ошондой эле астын сызык менен сандын цифраларын бөлүүнү колдойт:

 

int x = 123_456;

int y = 234_567__789;

System.out.println(x); // 123456

System.out.println(y); // 234567789

 

Ондук бөлчөк түрүндөгү сандар

3.1, 4.5 ж.б. сыяктуу ондук бөлчөк берилсе, Java автоматтык түрдө ал литералды double тиби катары карайт. Ал эми берилген маани ондук бөлчөккатары каралышы керек экенин көрсөтүү үчүн, биз f суффиксти колдонушубуз керек:

 

float fl = 30.6f;

double db = 30,6;

Жана бул учурда эки өзгөрмө тең дээрлик бирдей мааниге ээ болсо да, бул өзгөрмөлөр башкача каралат жана эстутумда ар кандай көлөмдү ээлейт.

 

Символдор жана саптар

Маани катары char тибиндеги өзгөрмө бир тырмакчага алынган бир символду алат: char ch='e';. Кошумчалай кетсек, символ түрүнүн өзгөрмөсүнө 0дөн 65535ке чейинки бүтүн сан ыйгарылган болушу мүмкүн. Бул учурда, өзгөрмө кайрадан символду сактайт, ал эми бүтүн сандын мааниси Юникод (UTF-16) символундагы символдун номерин көрсөтөт. Мисалы:

 

charch=102; // 'f' символу

System.out.println(ch);

char өзгөрмөлөрүн String өзгөрмөлөрү менен чаташтырбоо керек, 'a' “a” менен бирдей эмес. char өзгөрмөлөрү String объектисин билдирет, ал char же int дeн айырмаланып, Javaда примитивдүү тип эмес:

 

String hello = "Салам...";

System.out.println(hello);

Тамгаларды, сандарды, тыныш белгилерин жана башка символдорду билдирген чыныгы символдордон тышкары, атайын ырааттуулуктагы белгилердин топтому бар. Мисалы, эң популярдуу ырааттуулук "\n". Ал кийинки сапка өтөт. Мисалы:

 

String text = "Hello\nworld";

System.out.println(text);

Бул кодду аткаруунун натыйжасы:

Hello

World

 

Бул учурда, \n ырааттуулугу кийинки сапка которуу керек деген сигнал болот.

 

15-версиясынан баштап Java тексттик блокторун (text blocks) колдойт - үч тырмакчага алынган көп саптуу текст. Келгиле, алардын иш жүзүндө кандай колдонуларын карап көрөлү. Мисалы, көп саптуу чоң текстти көрсөтөлү:

 

String text = " Ысык-Көл кээде тынч да, кээде толкун,\n"+

                " Толкуса толкунуна тең ортокмун.\n"+

                " Турмушта канча жолдош күтсөм дагы,\n"+

                " Бир сырлуу мындай жолдош күткөн жокмун.";

System.out.println(text);

+ операторунун жардамы менен биз бирине башка текстти тиркесек болот, ал эми тексттин уландысы кийинки сапта жайгаша алат. Чыгарып жатканда текст кийинки сапка өтүшүн камсыз кылуу үчүн \n ырааттуулугу колдонулат.

Бул кодду аткаруунун натыйжасы:

Ысык-Көл кээде тынч да, кээде толкун,
Толкуса толкунуна тең ортокмун.
Турмушта канча жолдош күтсөм дагы,
Бир сырлуу мындай жолдош күткөн жокмун.

JDK 15 ке киргизилген текст блоктору көп саптуу текстти жазууну жеңилдетет:

 

String text = """

Ысык-Көл кээде тынч да, кээде толкун,
Толкуса толкунуна тең ортокмун.
Турмушта канча жолдош күтсөм дагы,
Бир сырлуу мындай жолдош күткөн жокмун.

                """;

System.out.println(текст);

Бүтүндөй текст блогу үч тырмакчага оролуп, алардын жайганкан ордун өзгөртпөө үчүн саптарды бириктирүүнү же \n ырааттуулугун колдонуунун кереги жок. Программаны иштетүүнүн натыйжасы жогорудагы мисалдагыдай болот.