JAVA PAGRINDAI DETALIAU

Java numatytosios reikšmės

Sukūrus objektą arba masyvą, Java jų laukus ir elementus automatiškai užpildo pradinėmis reikšmėmis. Jos vadinamos numatytosiomis reikšmėmis. Tačiau ši taisyklė negalioja vietiniams kintamiesiems.

Kokią reikšmę suteikia Java?

Java tipų numatytosios reikšmės
TipasNumatytoji reikšmėPaprastas paaiškinimas
byte, short, int, long0Pradinis sveikasis skaičius yra nulis.
float, double0.0Pradinis trupmeninis skaičius yra nulis.
booleanfalseSąlyga iš pradžių laikoma neteisinga.
char'\u0000'Nulio simbolis, kuris paprastai ekrane nematomas.
Nuorodų tipai, pavyzdžiui, StringnullNuoroda kol kas nerodo į jokį objektą.

Objekto laukų numatytosios reikšmės

Jeigu klasės laukams patys nepriskiriame reikšmių, Java jas suteikia kuriant objektą:

class PirkiniuKrepselis {
    int prekiuKiekis;
    double bendraKaina;
    boolean apmoketa;
    char kategorija;
    String pirkejoVardas;
}

PirkiniuKrepselis krepselis = new PirkiniuKrepselis();

System.out.println(krepselis.prekiuKiekis);
System.out.println(krepselis.bendraKaina);
System.out.println(krepselis.apmoketa);
System.out.println((int) krepselis.kategorija);
System.out.println(krepselis.pirkejoVardas);
Konsolės rezultatas

0
0.0
false
0
null

  1. prekiuKiekis yra int, todėl pradžioje lygus 0.
  2. bendraKaina yra double, todėl pradžioje lygi 0.0.
  3. apmoketa yra boolean, todėl pradžioje lygi false.
  4. char nulio simbolio nematome, todėl pavertę jį į int išspausdiname jo kodą 0.
  5. pirkejoVardas dar nerodo į jokį String objektą, todėl jo reikšmė yra null.

Masyvo elementai taip pat užpildomi

int[] taskai = new int[3];
boolean[] atlikta = new boolean[2];
String[] vardai = new String[2];

System.out.println(taskai[0]);
System.out.println(atlikta[0]);
System.out.println(vardai[0]);
Konsolės rezultatas

0
false
null

new sukuria visas masyvo vietas iš karto. Net jei patys dar nieko neįrašėme, kiekviena vieta jau turi jos tipui tinkamą numatytąją reikšmę.

Plačiau apie Java masyvus

Vietiniai kintamieji numatytosios reikšmės negauna

Metodo viduje paskelbtą kintamąjį prieš naudojant privalome inicializuoti patys:

public static void main(String[] args) {
    int amzius;

    System.out.println(amzius); // Klaida: amzius neinicijuotas
}
Rezultatas

Kodas nesukompiliuojamas: kompiliatorius praneša, kad kintamasis amzius galėjo būti neinicijuotas.

Java taip apsaugo nuo atsitiktinio nežinomos reikšmės naudojimo. Kintamajam reikia suteikti reikšmę prieš bandant ją perskaityti.

public static void main(String[] args) {
    int amzius = 12;
    String vardas = "Ieva";

    System.out.println(vardas + " yra " + amzius + " metų.");
}
Konsolės rezultatas

Ieva yra 12 metų.

Plačiau apie vietinius kintamuosius

Dažnai geriau reikšmę nurodyti aiškiai

class Lempa {
    boolean ijungta = true;
    int ryskumas = 50;
    String kambarys = "Virtuvė";
}

Nors Java galėtų suteikti false, 0 arba null, prasminga pradinė reikšmė aiškiau parodo programuotojo ketinimą. Šiame pavyzdyje iš karto matome, kokios būsenos lempa sukuriama.

null nėra tuščias tekstas

  • null reiškia, kad nuoroda nerodo į jokį objektą.
  • "" yra egzistuojantis, bet nė vieno simbolio neturintis String objektas.
  • Per null negalima kviesti metodo – tai gali sukelti NullPointerException.
  • Numatytoji reikšmė nebūtinai yra tinkama programos prasmei, todėl svarbius laukus inicializuok sąmoningai.

Ką verta prisiminti?

  • Objektų laukai ir masyvų elementai automatiškai gauna numatytąsias reikšmes.
  • Skaičių pradinė reikšmė yra nulis, boolean – false.
  • Nuorodų tipų pradinė reikšmė yra null.
  • Vietinius kintamuosius prieš naudojant būtina inicializuoti patiems.
  • Aiški pradinė reikšmė dažnai padaro kodą lengviau suprantamą.