JAVA PAGRINDAI DETALIAU
Java new raktažodis
Raktažodis new liepia Java sukurti naują objektą arba masyvą. Paprastai tariant, deklaracija suteikia kintamajam vardą, o new paruošia tikrą vietą duomenims.
Naujo objekto sukūrimas
Sukurkime kasdienį objektą – puodelį, turintį spalvą:
class Puodelis {
String spalva;
Puodelis(String spalva) {
this.spalva = spalva;
}
}
Puodelis manoPuodelis = new Puodelis("mėlynas");
System.out.println(manoPuodelis.spalva);mėlynas
Puodelisyra klasė – būsimo objekto aprašymas.manoPuodelisyra kintamasis, kuriame bus saugoma nuoroda į objektą.new Puodelis("mėlynas")sukuria naująPuodelisobjektą.- Skliaustuose perduota reikšmė patenka į konstruktorių, o šis nustato objekto spalvą.
- Operatorius
=išsaugo nuorodą kintamajamemanoPuodelis.
Deklaracija dar nesukuria objekto
Puodelis puodelis;
// Čia objektas dar nesukurtas.
puodelis = new Puodelis("žalias");Šis kodas nieko nespausdina. Jis pirmiausia paskelbia kintamąjį, o tik vėliau sukuria objektą.
Eilutė Puodelis puodelis; yra panaši į tuščią etiketę su vardu. Tik įvykdžius new Puodelis(...) atsiranda objektas, į kurį ši etiketė gali rodyti.
new naudojimas su masyvu
Masyvui po tipo nurodome, kiek elementų vietų reikia sukurti:
int[] pazymiai = new int[3];
pazymiai[0] = 8;
pazymiai[1] = 10;
System.out.println(pazymiai.length);
System.out.println(pazymiai[0]);
System.out.println(pazymiai[2]);3
8
0
new int[3]sukuria tris sunumeruotas vietas:0,1ir2.- Java visas naujo
intmasyvo vietas iš pradžių užpildo skaičiumi0. - Pirmoms dviem vietoms priskiriame
8ir10. - Trečios vietos nepakeitėme, todėl joje lieka pradinė reikšmė
0.
Ką reiškia skliaustai po klasės pavadinimo?
Knyga knyga = new Knyga("Mažasis princas");Knyga nurodo kuriamos reikšmės klasę, o Knyga("Mažasis princas") iškviečia tinkamą jos konstruktorių. Konstruktorius paruošia pradinę objekto būseną.
Kiekvienas new paprastai sukuria atskirą objektą
Puodelis pirmas = new Puodelis("baltas");
Puodelis antras = new Puodelis("baltas");
System.out.println(pirmas == antras);
System.out.println(pirmas.spalva.equals(antras.spalva));false
true
- Abi eilutės sukuria po atskirą puodelio objektą.
pirmas == antrastikrina, ar abi nuorodos rodo į tą patį objektą, todėl rezultatas yrafalse.- Abiejų objektų spalvos tekstas vienodas, todėl
equals()grąžinatrue.
Kas nutinka atminčiai?
Java pati valdo objektams skirtą atmintį. Kai sukurtas objektas programai tampa nebepasiekiamas, jį vėliau gali pašalinti šiukšlių surinktuvas (garbage collector). Programuotojui nereikia rankiniu būdu atlaisvinti atminties po kiekvieno new.
Ką verta prisiminti?
newsukuria naują objektą arba masyvą.- Kuriant objektą, iškviečiamas jo konstruktorius.
- Kintamajame saugomas ne pats objektas, o nuoroda į jį.
- Vien deklaruoti nuorodos kintamąjį nepakanka – objektas nuo to dar neatsiranda.
new int[3]sukuria tiksliai tris masyvo elementų vietas.- Java automatiškai prižiūri nebenaudojamų objektų atmintį.

