# Kateri so različni tipi podatkov v Javi?

Java ponuja osem primitivnih podatkovnih tipov in številne kompleksne podatkovne tipe. Ti določajo, katere vrednosti se lahko shranijo in prikažejo v spremenljivki. Vsi spremenljivki v Javi so dodeljeni določeni podatkovni tipi.

## Kakšni tipi podatkov obstajajo v Javi?

V vsakem programskem jeziku obstajajo različni podatkovni tipi, ki vsebujejo specifične objekte in definirane operacije. Čeprav so možnosti podatkovnih tipov, ki jih ponujajo različni jeziki, pogosto podobne, obstajajo včasih tudi pomembne razlike. Če na primer [primerjate Python in Java](https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/python-proti-javi/) ter njune podatkovne tipe, boste opazili podobnosti med njima, pa tudi številne razlike, zaradi katerih sta jezika primerna za različne vrste nalog.

Java uporablja dve različni vrsti podatkovnih tipov: **primitivne in kompleksne**. Kompleksni podatkovni tipi se imenujejo tudi referenčni tipi. Primitivni in kompleksni podatkovni tipi se razlikujejo po velikosti in določajo, katere vrednosti se lahko shranijo v spremenljivki. Medtem ko primitivni podatkovni tipi lahko **shranjujejo** le **preproste vrednosti**, se referenčni tipi uporabljajo za **ustvarjanje bolj kompleksnih struktur** ter **organiziranje in manipulacijo velikih količin podatkov**.

Če se želite naučiti programirati, je pomembno, da poznate ne le različne tipe podatkov, ampak tudi to, kako iz vsakega izmed njih izvleči največ. Razumevanje, kako najbolje uporabiti tipe podatkov, ni le vprašanje razumevanja njihove funkcionalnosti, ampak tudi tega, koliko pomnilnika porabijo (ali prihranijo).

## Kaj so primitivni podatkovni tipi v Javi?

[V Javi](https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/java-primitivni-tipi/) obstaja skupno osem različnih [primitivnih podatkovnih tipov](https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/java-primitivni-tipi/), ki vsebujejo strogo določena vrednostna območja. Razdelimo jih lahko v štiri kategorije: **logični podatkovni tipi, integralni podatkovni tipi, podatkovni tipi s plavajočo vejico in znakovni podatkovni tipi**. Nimajo dodatnih posebnih zmogljivosti in se imenujejo tudi osnovni podatkovni tipi. Vsak podatkovni tip ima fiksno število bitov. Primitivne podatkovne tipe bomo podrobneje obravnavali v nadaljevanju. Java uporablja naslednje primitive tipe:

- boolean
- bajt
- kratka
- int ali celo število
- dolgo
- float
- dvojno
- char

### `boolean`

[Boolean](https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/primitivni-podatkovni-tip-boolean-v-javi/) podatkovni tip[v Javi](https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/primitivni-podatkovni-tip-boolean-v-javi/) ni numerični tip. Ponuja le dve možni vrednosti: **true** in **false**. Uporablja se za določanje, ali pogoj velja (true) ali ne (false). Je logični podatkovni tip, njegova privzeta vrednost pa je `false`. Sestavljen je iz 1 bita in ima naslednjo sintakso:

```java
boolean booleanVar;
```

### `byte`

`byte` je integralni podatkovni tip, predstavljen kot vrednost dopolnila do dveh z velikostjo 8 bitov ali 1 bajt. Običajno se uporablja za varčevanje s pomnilnikom v večjih nizih. Njegov razpon vrednosti sega od -128 do 127, privzeta vrednost pa je 0. Tukaj je njegova sintaksa:

```java
byte byteVar;
```

### `short`

`short` je tudi eden od integralnih podatkovnih tipov v Javi in se uporablja predvsem za varčevanje s pomnilnikom v večjih nizih. Vrednost dopolnila dveh je 16 bitov ali 2 bajta, njen vrednostni razpon pa sega **od -32768 do vključno 32767**. Privzeto je njena vrednost 0. Tako se uporablja `short`:

```java
short shortVar
```

### `int` ali celo število

`int` ali celo število je tudi vrednost dopolnila do dveh in integralni podatkovni tip z velikostjo 4 bajtov ali 32 bitov. Njegov vrednostni razpon vključuje cela števila **med -2147483648 in 2147483647**, njegova privzeta vrednost pa je 0. Njegova sintaksa je naslednja:

```java
int intVar
```

### `long`

Največji integralni podatkovni tip je `long`. To velja najprej za njegov vrednostni razpon, ki je **med -9223372036854775808 in 9223372036854775807**, in nato za njegovo velikost, ki je 8 bajtov ali 64 bitov. Dvojiški dopolnilni vrednosti se zato uporablja, če drugi celoštevilčni podatkovni tipi niso zadostni. Vendar pa zahteva tudi daleč največ pomnilnika. Njena privzeta vrednost je 0. To je njena sintaksa:

```java
lomg longVar
```

### `float`

`float` je podatkovni tip s plavajočo vejico in se uporablja za shranjevanje realnih števil. Ima velikost 32 bitov in je skladen s standardom IEEE 754, ki opredeljuje standardno predstavitev binarnih in decimalnih števil s plavajočo vejico v računalnikih. Standardna vrednost `float` je 0,0, v njenem vrednostnem območju pa je mogoče predstaviti do **sedem decimalnih mest**. V primerjavi z double pa `float` ni tako natančen in ga zato ne smemo uporabljati za vrednosti, pri katerih je natančnost odločilnega pomena. Če pa to ni primer, lahko `float` uporabimo za prihranek prostora. Sintaksa za `float` je naslednja:

```java
float floatVar;
```

### `double`

`double` je približno dvakrat natančnejši od float in ima podoben namen. Je velik 64 bitov in lahko predstavlja **do 16 decimalnih mest**. Njegova privzeta vrednost je prav tako 0,0. Če potrebujete natančnejše vrednosti, morate vedno uporabiti `double`, čeprav tudi ta podatkovni tip ni tako natančen. Če želite delati z absolutno natančnimi vrednostmi, morate namesto tega uporabiti razred BigDecimal. Sintaksa `double` je naslednja:

```java
double doubleVar;
```

### `char`

`char` je tip podatkov znakov. Shranjuje znake na podlagi znakovne kode Unicode, kar omogoča prenosljivost na številne različne platforme. Vsak znak zahteva 2 bajta pomnilnika. Njegov vrednostni razpon ustreza ASCII (American Standard Code for Information Interchange) in se nahaja **med ‘\\u0000’ (tj. 0) in ‘\\uffff’ (ustreza 65535)**. Privzeta vrednost char je „\\u0000“, njegova sintaksa pa je naslednja:

```java
char charVar
```

## Kaj so kompleksni podatkovni tipi v Javi?

Drugi tip podatkovnih tipov v Javi so referenčni tipi, imenovani tudi kompleksni podatkovni tipi. Imenujejo se referenčni tipi, ker se **nanašajo na objekte**. V nasprotju s primitivnimi podatkovnimi tipi običajno niso vnaprej določeni, ampak jih določi programer (izjema je niz). Lahko uporabljajo metode in imajo lahko tudi vrednost 0 (v smislu prazno). Medtem ko se primitivni podatkovni tipi začnejo z malo začetnico, se referenčni tipi začnejo z veliko začetnico. Tukaj si bomo ogledali najpomembnejše referenčne tipe.

### Nize

`String` je razred, ki se lahko uporablja za predstavitev **zaporedja znakov**, kar ta kompleksni podatkovni tip ločuje od primitivnega podatkovnega tipa `char` in drugih podatkovnih tipov. Niz obstaja kot objekt v razredu `java.lang`. Različne metode razreda String omogočajo pregledovanje posameznih znakov v nizu, primerjanje nizov med seboj, iskanje nizov in kopiranje nizov. Nizi so označeni z narekovaji. Sintaksa tega referenčnega tipa je naslednja:

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

Tukaj je primer, kako delujejo nizi:

```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");
```

### Nizi

Nizi se uporabljajo za shranjevanje **več vrednosti v spremenljivki**, namesto da bi za vsako posamezno vrednost ustvarili različne spremenljivke. Ustvarijo se z uporabo oglatih oklepajev. Shranjene vrednosti se postavijo v oklepaje in ločijo z vejicami. Tukaj je sintaksa za nize:

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

Če želite ustvariti niz z nizi, lahko to storite na naslednji način:

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

Tako ustvarite niz s celimi števili:

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

### Razredi

V Javi so razredi podatkovni tipi, ki **služijo kot predloga** za ustvarjanje objektov. Vsebujejo različne komponente, vključno z imenom razreda, modifikatorji in telesom, zaprtim v oklepajih. Tukaj je primer, kako izgleda razred v Javi:

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

### Vmesniki

V Javi je vmesnik **abstrakten razred**. Deluje kot vmesnik, prek katerega lahko razred dostopa do različnih funkcij. Da bi to lahko storil, pa jih mora najprej implementirati. Vmesniki vsebujejo samo konstante in abstrakte metode. Njihova sintaksa je naslednja:

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

Tukaj bomo na preprostem primeru pokazali, kako delujejo vmesniki:

```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();
	}
}
```

Ustrezni izpis iz ukaza Java `System.out.println` je naslednji:

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

### Predmeti

V Javi so objekti prav tako kompleksni podatkovni tipi. Objekti so **primeri razredov,** ki lahko med seboj komunicirajo z uporabo metod. V naslednjem primeru bomo ustvarili več objektov v razredu Main:

```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);
	}
}
```

Izhod je videti takole:

```java
10
10
```

### Enumi

[Enumi](https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/java-enums/) so posebna razreda, ki vam omogočajo vključitev **nespremenljivih konstant v vaš kod**. Tem spremenljivkam so dodeljene fiksne vrednosti, ki jih ni mogoče spremeniti. Ta podatkovni tip je še posebej uporaben, če potrebujete spremenljivke, ki imajo le nekaj možnih stanj. Sintaksa enuma je naslednja:

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


This is a markdown version of: [https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/tipi-podatkov-v-javi/](https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/tipi-podatkov-v-javi/) for AI/LLM consumption.