Типът данни се определя от три компонента:
- набор от стойности или обекти;
- набор от операции, които могат да бъдат приложени към всички стойности в набор;
- представяне на данни, дефиниране на тяхното съхранение.
Какви са типовете данни в Java?
Езикът за програмиране съдържа някои предварително дефинирани вградени типове и позволява на програмистите да дефинират свои собствени, персонализирани.
В Java типовете данни се делят на примитивни и референтни типове.
"Примитивно" означава, че по-нататъкразделяне не е възможно. Неговият език за програмиране не позволява да се разширява или променя. Този тип данни се описва от примитивни и други дефинирани от потребителя типове.
Променлива от примитивен тип съдържа стойност, а референтната променлива съдържа адреса на обект в паметта.
Java език. Типове данни: час и дата
Композитните данни са разделени на класове, интерфейси и масиви. Членовете на интерфейсния тип са абстрактни методи и константи. В Java типовете данни за дата и час са посочени от конструктора Date ():
- d = нова дата ().
Низът също е пример за връзка.
Java език. Типове данни: String
Низът е клас, дефиниран в библиотеката на Java и може да се използва за манипулиране на текст (поредица от символи).
Декларацията на референтна променлива String е както следва: String str.
Преди да присвоите препратка към обект на такава променлива, трябва да го създадете с помощта на новия оператор. Например можете да създадете обект от класа String с текст "Hello":
- str = нов низ ("Здравей").
Какво се случва, когато се изпълни този код? Първо, паметта се разпределя и името str се свързва с това място в паметта. Това не се различава от декларирането на примитивна променлива. Втората част от кода създава String обект в паметта с текст "Hello" и съхранява препратка към него (или адрес на паметта) в str.
Препращаните към Java типове данни също позволяватприсвояване на препратка към обект, съхранявана в една променлива, на друга. И двамата се отнасят до един и същ обект в паметта. Това може да се постигне, както следва:
- String str1;
- String str2;
- str1 = нов низ ("Здравей");
- str2 = str1;
Има нулева постоянна препратка, която може да бъде присвоена на всяка референтна променлива. Не се отнася за нито един обект.
Обектът String се създава с помощта на новия оператор. Но тъй като низовете се използват много, има по-лесен начин да го създадете. Всички низови литерали, тоест последователност от символи, затворени в двойни кавички, се третират като String обекти. Следователно, вместо новия оператор, можете да използвате низ литерали:
- String str1 = "Здравей".
Java примитивни типове данни - байт, кратък, int,long, char, float, double и boolean. Те попадат в две категории: логически и цифрови. Последните могат да бъдат разделени на цели числа и числа с плаваща запетая.
Java целочислените типове данни са числови типове, чиито стойности са цели числа. Има пет от тях: байт, къс, int, дълъг и char.
Международна
Int е 32-битов примитивен тип данни с подпис. Променливата заема 32 бита памет. Валидният диапазон е от -2147483648 до 2147483647 (-231 до 231 - 1). Всички цели числа в този диапазон са целочислени литерали или константи. Например 10, -200, 0, 30, 19 са int литерали. Те могат да бъдат присвоени на променлива int:
- int num1 = 21;
Целочислените литерали могат да бъдат изразени като двоични, осмични, десетични и шестнадесетични числа.
Когато литералът започва с нула и има поне две цифри, се счита, че е в осмичен формат. 0 и 00 представляват една и съща стойност - нула.
Всички int литерали в шестнадесетичен формат започват с 0x или 0x и трябва да съдържат поне една шестнадесетична цифра:
- int num1 = 0x123.
Int литералите в двоичен формат започват с 0b или 0B:
- int num1 = 0b10101.
Дълго
Това е 64-битов подписан примитивен тип. Използва се, когато резултатът от изчисленията може да надвиши обхвата int. Голям обхват - от -263 до 263- 1. Всички цели числа в този диапазон са литерали от дълъг тип.
За да се прави разлика между типовете данни int и long в Java, литералът на последния тип винаги завършва с L или l.
Целочислените литерали от дълъг тип могат също да бъдат изразени в осмичен, шестнадесетичен и двоичен формат.
Когато дълъг литерал е присвоен на дълга променлива,Java компилаторът проверява присвоената стойност и се уверява, че тя е в приемлив диапазон; в противен случай ще възникне грешка при компилацията.
Тъй като обхватът на int е по-малък от този на long,стойността на променлива int винаги може да бъде присвоена на променлива от тип long. Но обратното присвояване не е възможно дори в обхвата на int. За това се използва изрично указание:
- num1 = (int) num2;
Байт
Байтът е 8-битов целочислен примитивен тип. Обхватът му е от -128 до 127 (-27 до 27 - един). Това е най-малкият цял тип, наличен в Java.По правило байтовите променливи се използват, когато програмата включва много стойности в диапазона от -128 до 127 или при работа с двоични данни. За разлика от int и long литерали, няма байтови литерали. Можете обаче да присвоите всеки int литерал на байтова променлива, тъй като тя припокрива байтовия диапазон.
Ако стойността на променлива е извън обхвата, Java ще изведе грешка на компилатора.
Освен това можете да присвоите само int литерал, но не и стойността, съхранявана в променливата int, тъй като това може да доведе до загуба на точност. Това ще изисква изричен актьорски състав.
- b1 = (байт) num1.
Къс
Представлява 16-битов примитивен тип данни с подписване на цяло число. Обхватът му е от -32768 до 32767 (или -215 до 215 - един).
Обикновено нуждата от кратки променлививъзниква, когато програма използва голям брой стойности, които не надвишават посочения диапазон. Няма кратък литерал, но можете да присвоите всеки int литерал в рамките на краткия диапазон. Стойността на байтова променлива винаги може да бъде присвоена. Останалите правила за присвояване на int или long на short са същите като за байт.
Чар
Char е 16-битов неподписанпримитивен тип данни, който представлява Unicode символ. Липсата на знак означава, че променливата не може да има отрицателна стойност. Диапазонът е от 0 до 65535, което съответства на кодирането на Unicode набор от символи. Буквалът представлява стойност на знак и може да бъде изразен в следните форми:
- знак, затворен в единични кавички;
- последователност от контролни знаци;
- последователност от контролни знаци на unicode;
- последователност от осмични контролни знаци.
Символът може да бъде изразен чрез затварянето му вединични кавички: char C1 = "A". Двойните кавички означават низов литерал, който не може да бъде присвоен на променлива char, дори ако низът съдържа само един знак. Това не е разрешено, тъй като не е зададена препратка към примитивна променлива. Всички низови литерали са String обекти и следователно препратки, докато символните литерали са от примитивен тип.
Литералът на екранираща последователност се записва като обратна наклонена черта, последвана от символ в единични кавички. Има общо 8 от тях: ‘n’, ‘r’, ‘f’, ‘b’, ‘t’, ‘\’, ‘” ’,‘ ’’.
Unicode Escape Sequence е"uxxxx", където u (обратна наклонена черта, последвана от малка буква u) означава неговото начало, а xxxx представлява точно четири шестнадесетични цифри от кода на символа Unicode. Например „A“ е 65 десетични и 41 шестнадесетични. По този начин този знак може да бъде представен като "u0041".
Окталната евакуационна последователност се записва като "nnn", където n е осмична цифра (0-7). Стойностите варират от "00" до "377", където 3778 съответства на 25510... Следователно, той се използва за представянесимволи с код от 0 до 255, необходими за съвместимост с други програмни езици. За разлика от unicode последователностите, които изискват и четирите шестнадесетични цифри, тук можете да използвате 1, 2 или 3 осмични цифри: "n", "nn" или "nnn".
Булев тип
Boolean има само две валидни стойности:вярно и невярно. Те се наричат булеви литерали. Булева променлива не може да бъде предадена на друг тип и обратно. Java не посочва размера на булевото значение - това зависи от конкретното изпълнение на JVM.
Типове данни с плаваща запетая на Java
Число, което съдържа дробна част в паметтаКомпютърът може да се съхранява в представяне с фиксиран брой цифри преди и след точката или посочване на нейната позиция. Тъй като броят на цифрите може да варира, се казва, че точката "плава".
В езика Java типовете данни с плаваща запетая използват 32 бита. Според стандарта IEEE 754 това съответства на единична точност, която ви позволява да представите, например, числа 1,4 х 10-45 и 3,4 х 1038, както положителни, така и отрицателни.
Всички реални числа, завършващи на f или F, се наричат плаващи литерали. Те могат да бъдат представени в десетичен формат и в научна нотация. Например:
- плувка f1 = 3.25F;
- плувка f2 = 32,5E-1F;
- поплавък f3 = 0,325E + 1F.
Типът определя две нули: + 0.0F (или 0.0F) и -0.0F.За целите на сравнението обаче и двете нули се считат за равни. Освен това той определи два вида безкрайност: положителна и отрицателна. Резултатите от някои операции (например разделяне на 0.0F на 0.0F) са недефинирани и са представени със специалната стойност NaN.
Двойна точност
Double използва 64 бита за съхраняване на числа с плаваща запетая. Числата с двойна точност могат да представляват положителни и отрицателни стойности от 4,9 х 10-324 и 1,7 х 10308.
Всички реални числа са по подразбиранедвойни литерали. По желание те могат да бъдат изрично посочени с наставката d или D, например 19.27d. Двойният буквал може да бъде изразен в десетична форма и в научна нотация.