# Kokie yra skirtingi duomenų tipai Java kalboje?

Java siūlo aštuonis primityvius duomenų tipus ir daugybę sudėtingų duomenų tipų. Jie nulemia, kokios reikšmės gali būti saugomos ir rodomos kintamajame. Tam tikri duomenų tipai yra priskiriami visiems kintamiesiems Java kalboje.

## Kokie duomenų tipai yra Java?

Kiekvienoje programavimo kalboje yra įvairių duomenų tipų, kurie apima konkrečius objektus ir apibrėžtas operacijas. Nors skirtingų kalbų siūlomi duomenų tipų variantai dažnai yra panašūs, kartais yra ir reikšmingų skirtumų. Pavyzdžiui, [palyginus Python ir Java kalbas](https://www.ionos.com/lt-lt/digitalguide/interneto-svetaines/interneto-svetainiu-kurimas/python-pries-java/) bei jų duomenų tipus, galima pastebėti panašumų, bet taip pat ir daug skirtumų, dėl kurių šios kalbos tinka skirtingiems uždaviniams atlikti.

Java naudoja dviejų skirtingų tipų duomenų tipus: **primityvius ir sudėtinius**. Sudėtiniai duomenų tipai taip pat vadinami nuorodų tipais. Primityvūs ir sudėtiniai duomenų tipai skiriasi savo dydžiu ir nulemia, kokios reikšmės gali būti saugomos kintamajame. Primityvūs duomenų tipai gali **saugoti** tik **paprastas reikšmes**, o nuorodų tipai naudojami **sudėtingesnėms struktūroms kurti**, **dideliems duomenų kiekiams tvarkyti ir manipuliuoti**.

Jei norite išmokti programuoti, svarbu ne tik žinoti skirtingus duomenų tipus, bet ir tai, kaip iš kiekvieno iš jų išgauti maksimalią naudą. Norint suprasti, kaip geriausiai naudoti duomenų tipus, reikia ne tik suprasti jų funkcionalumą, bet ir tai, kiek atminties jie naudoja (arba taupo).

## Kas yra primityvūs duomenų tipai Java kalboje?

[Java kalboje](https://www.ionos.com/lt-lt/digitalguide/interneto-svetaines/interneto-svetainiu-kurimas/java-primityvai/) yra iš viso aštuoni skirtingi [primityvūs duomenų tipai](https://www.ionos.com/lt-lt/digitalguide/interneto-svetaines/interneto-svetainiu-kurimas/java-primityvai/), kurie turi griežtai apibrėžtus verčių intervalus. Juos galima suskirstyti į keturias kategorijas: **loginiai duomenų tipai, integraliniai duomenų tipai, slankiojo kablelio duomenų tipai ir simbolių duomenų tipai**. Jie neturi jokių papildomų specialių savybių ir dar vadinami elementariais duomenų tipais. Kiekvienas duomenų tipas turi fiksuotą bitų skaičių. Toliau išsamiau aptarsime primityvius duomenų tipus. Java naudoja šiuos primityvius tipus:

- būlio
- baitas
- trumpasis
- int arba sveikasis skaičius
- ilgas
- plūduriuojantis
- dvigubas
- char

### `boolean`

[Java boolinis](https://www.ionos.com/lt-lt/digitalguide/interneto-svetaines/interneto-svetainiu-kurimas/java-boolinis-primityvusis-duomenu-tipas/) duomenų tipas nėra skaitmeninis tipas. Jis siūlo tik dvi galimas reikšmes: **true** ir **false**. Jis gali būti naudojamas norint nustatyti, ar sąlyga taikoma (true) ar ne (false). Tai loginis duomenų tipas, kurio numatytoji reikšmė yra `false`. Jis sudarytas iš 1 bito ir turi tokią sintaksę:

```java
boolean booleanVar;
```

### `byte`

`byte` yra integralus duomenų tipas, pateikiamas kaip dviejų papildinių vertė, kurios dydis yra 8 bitai arba 1 baitas. Jis paprastai naudojamas siekiant sutaupyti atminties didesnėse masyvuose. Jo verčių diapazonas yra nuo -128 iki 127, o numatytoji vertė yra 0. Štai jo sintaksė:

```java
byte byteVar;
```

### `short`

`short` taip pat yra vienas iš integralinių duomenų tipų Java kalboje ir dažniausiai naudojamas atminties taupymui didesniuose masyvuose. Dviejų papildų vertė yra 16 bitų arba 2 baitų dydžio, o jos vertės diapazonas yra **nuo -32768 iki 32767 imtinai**. Pagal numatytuosius nustatymus jos vertė yra 0. Štai kaip naudojamas `short`:

```java
short shortVar
```

### `int` arba sveikasis skaičius

`int` arba sveikasis skaičius taip pat yra dviejų papildinių vertė ir integralus duomenų tipas, kurio dydis yra 4 baitai arba 32 bitai. Jo vertės diapazonas apima sveikųjų skaičių **nuo -2147483648 iki 2147483647**, o jo numatytoji vertė yra 0. Jo sintaksė yra tokia:

```java
int intVar
```

### `long`

Didžiausias integralus duomenų tipas yra `long`. Tai pirmiausia taikoma jo verčių diapazonui, kuris yra **nuo -9223372036854775808 iki 9223372036854775807**, ir antra, jo dydžiui, kuris yra 8 baitai arba 64 bitai. Todėl dviejų papildinių vertė naudojama, jei kiti integralūs duomenų tipai yra nepakankami. Tačiau ji taip pat reikalauja daugiausia atminties. Jos numatytoji vertė yra 0. Štai jos sintaksė:

```java
lomg longVar
```

### `float`

`float` yra plaukiojančiojo kablelio duomenų tipas, naudojamas realių skaičių saugojimui. Jo dydis yra 32 bitai ir jis atitinka IEEE 754 standartą, kuris apibrėžia standartinį dvejetainių ir dešimtainių plaukiojančiojo kablelio skaičių atvaizdavimą kompiuteriuose. Standartinė `float` vertė yra 0,0, o jo vertės diapazone gali būti atvaizduojami iki **septynių dešimtainių skaičių**. Tačiau, palyginti su double, `float` nėra toks tikslus, todėl neturėtų būti naudojamas vertėms, kurioms tikslumas yra labai svarbus. Tačiau, jei tai nėra būtina, galite naudoti `float`, kad sutaupytumėte vietos. `float` sintaksė yra tokia:

```java
float floatVar;
```

### `double`

`double` yra maždaug dvigubai tikslesnis už float ir atlieka panašią funkciją. Jo dydis yra 64 bitai ir jis gali atvaizduoti **iki 16 dešimtainių skaitmenų**. Jo numatytoji vertė taip pat yra 0,0. Jei jums reikalingos tikslesnės vertės, visada turėtumėte naudoti `double`, nors šis duomenų tipas taip pat nėra labai tikslus. Jei norite dirbti su visiškai tiksliomis reikšmėmis, turėtumėte naudoti BigDecimal klasę. `double` sintaksė yra tokia:

```java
double doubleVar;
```

### `char`

`char` yra simbolių duomenų tipas. Jis saugo simbolius, pagrįstus Unicode simbolių rinkiniu, todėl yra pritaikomas daugeliui skirtingų platformų. Kiekvienam simboliui reikia 2 baitų atminties. Jo vertės diapazonas atitinka ASCII (Amerikos standartinis informacijos mainų kodas) ir yra **tarp „\\u0000“ (t. y. 0) ir „\\uffff“ (atitinka 65535)**. Char numatytoji vertė yra „\\u0000“, o jo sintaksė atrodo taip:

```java
char charVar
```

## Kas yra sudėtingi duomenų tipai Java kalboje?

Antrasis duomenų tipų tipas Java kalboje yra nuorodų tipai, dar vadinami sudėtiniais duomenų tipais. Jie vadinami nuorodų tipais, nes jie **nurodo objektus**. Priešingai nei primityvieji duomenų tipai, jie paprastai nėra iš anksto apibrėžti, bet nustatomi programuotojo (išimtis – eilutė). Jie gali naudoti metodus ir taip pat gali turėti vertę 0 (tuščios reikšmės prasme). Primityvieji duomenų tipai prasideda mažąja raide, o nuorodų tipai – didžiąja raide. Čia apžvelgsime svarbiausius nuorodų tipus.

### Stygos

`String` yra klasė, kuri gali būti naudojama **simbolių sekos** atvaizdavimui, atskiriant šį sudėtingą duomenų tipą nuo primityvaus duomenų tipo `char` bei kitų duomenų tipų. Stygos egzistuoja kaip objektai `java.lang` klasėje. Įvairūs String klasės metodai leidžia jums tikrinti atskirus simbolius stygose, lyginti stygas tarpusavyje, ieškoti stygų ir kopijuoti stygas. Stygos yra identifikuojamos kabutėmis. Šio nuorodų tipo sintaksė atrodo taip:

```java
<string_type> <string_variable> = "<string_sequence>";
```

Štai pavyzdys, kaip veikia stygos:

```java
// How to create a string without a new operator
String a = "This is your new string";
/ / How to create a string with a new operator
String a1 = new string ("This is your new string");
```

### Masyvai

Masyvai naudojami **kelioms reikšmėms** saugoti **vienoje kintamojoje,** vietoj to, kad kiekvienai atskirai reikšmei būtų kuriamos skirtingos kintamosios. Jie kuriamos naudojant kvadratines skliausteles. Saugomos reikšmės rašomos skliaustuose ir atskiriamos kableliais. Štai masyvų sintaksė:

```java
dataType[] arrayName = {value1, value2, value3,…};
```

Jei norite sukurti masyvą su eilutėmis, galite tai padaryti taip:

```java
String[] colors = {"blue", "red", "yellow", "purple"};
```

Štai kaip sukurti masyvą su sveikaisiais skaičiais:

```java
int[] figures = {5, 10, 15, 20};
```

### Pamokos

Java kalboje klasės yra duomenų tipai, kurie **naudojami kaip šablonas** objektams kurti. Jos sudaro įvairius komponentus, įskaitant klasės pavadinimą, modifikatorius ir kūną, įrašytą į skliaustelius. Štai pavyzdys, kaip atrodo klasė Java kalboje:

```java
public class Main {
	int a = 10;
}
```

### Sąsajos

Java kalboje sąsaja yra **abstrakti klasė**. Ji veikia kaip sąsaja, per kurią klasė gali pasiekti įvairias funkcijas. Tačiau norint tai padaryti, pirmiausia jas reikia įgyvendinti. Sąsajos sudaro tik konstantos ir abstrakčiosios metodikos. Jų sintaksė atrodo taip:

```java
interface {
	abstract methods
}
```

Čia pateiksime paprastą pavyzdį, kad parodytume, kaip veikia sąsajos:

```java
interface Pizza {
	public void ingredientsList();
	public void preparation();
}
class Mushroom implements Pizza {
	public void ingredientsList() {
		System.out.println("mushrooms, tomato sauce, oregano, mozzarella");
}
public void preparation() {
	System.out.println("The pizza will be ready in 15 minutes.");
}
}
class Main {
	public static void main(String[] args) {
		Mushroom myMushroom = new Mushroom();
		myMushroom.ingredientsList();
		myMushroom.preparation();
	}
}
```

Atitinkamas Java komandos `System.out.println` išvesties rezultatas atrodo taip:

```java
mushrooms, tomato sauce, oregano, mozzarella
The pizza will be ready in 15 minutes.
```

### Objektai

Java kalboje objektai taip pat yra sudėtingas duomenų tipas. Objektai yra **klasių instancės**, kurios gali tarpusavyje sąveikauti naudodamos metodus. Toliau pateiktame pavyzdyje sukursime keletą objektų Main klasėje:

```java
public class Main {
	int a = 10;
public static void main(String[] args) {
	Main myObj1 = new Main();
	Main myObj2 = new Main();
	System.out.println(myObj1.a);
	System.out.println(myObj2.a);
	}
}
```

Rezultatas atrodo taip:

```java
10
10
```

### Enumai

[Enumai](https://www.ionos.com/lt-lt/digitalguide/interneto-svetaines/interneto-svetainiu-kurimas/java-enums/) yra speciali klasė, leidžianti įtraukti **nekintamas konstantas į jūsų kodą**. Šioms kintamosioms priskiriamos fiksuotos reikšmės, kurių negalima keisti. Šis duomenų tipas ypač naudingas, jei jums reikalingos kintamosios, kurios gali turėti tik keletą galimų būsenų. Enumo sintaksė atrodo taip:

```java
enum NameOfTheClass {
	VALUE1,
	VALUE2,
	VALUE3
}
```


This is a markdown version of: [https://www.ionos.com/lt-lt/digitalguide/interneto-svetaines/interneto-svetainiu-kurimas/java-duomenu-tipai/](https://www.ionos.com/lt-lt/digitalguide/interneto-svetaines/interneto-svetainiu-kurimas/java-duomenu-tipai/) for AI/LLM consumption.