muuttuja tarjoaa meille nimetyn tallennustilan, jota ohjelmamme voivat manipuloida. Jokaisella Javan muuttujalla on tietty tyyppi, joka määrittää muuttujan muistin koon ja asettelun, sen muistiin tallennettavien arvojen alueen ja muuttujaan sovellettavien toimintojen joukon.
kaikki muuttujat on ilmoitettava ennen kuin niitä voidaan käyttää. Seuraavassa on muuttujan ilmoituksen perusmuoto –
data type variable ...] ;
tässä tietotyyppi on yksi Javan tietotyypeistä ja muuttuja on muuttujan nimi. Useamman kuin yhden määritetyn tyypin muuttujan ilmoittamiseen voidaan käyttää pilkulla erotettua luetteloa.
Seuraavassa on valideja esimerkkejä muuttujan julistuksesta ja alustuksesta Javassa −
esimerkki
int a, b, c; // Declares three ints, a, b, and c.int a = 10, b = 10; // Example of initializationbyte B = 22; // initializes a byte type variable B.double pi = 3.14159; // declares and assigns a value of PI.char a = 'a'; // the char variable a iis initialized with value 'a'
tässä luvussa selitetään erilaisia Java-kielessä saatavilla olevia muuttujatyyppejä. Jaavassa on kolmenlaisia muuttujia –
- paikalliset muuttujat
- instanssimuuttujat
- Luokka/staattiset muuttujat
paikalliset muuttujat
-
paikalliset muuttujat syntyvät, kun metodi, konstruktori tai lohko syötetään ja muuttuja tuhoutuu, kun se poistuu menetelmästä, konstruktorista tai lohkosta.
-
Access-modifikaatioita ei voi käyttää paikallisille muuttujille.
-
paikalliset muuttujat näkyvät vain ilmoitetun menetelmän, konstruktorin tai lohkon sisällä.
-
paikalliset muuttujat toteutetaan pinotasolla sisäisesti.
-
paikallisille muuttujille ei ole oletusarvoa, joten paikalliset muuttujat tulee ilmoittaa ja alkuarvo antaa ennen ensimmäistä käyttöä.
paikalliset muuttujat ilmoitetaan menetelminä, konstruktioina tai lohkoina.
esimerkki
tässä ikä on paikallinen muuttuja. Tämä on määritelty Inside pupAge () – menetelmällä ja sen soveltamisala rajoittuu vain tähän menetelmään.
public class Test { public void pupAge() { int age = 0; age = age + 7; System.out.println("Puppy age is : " + age); } public static void main(String args) { Test test = new Test(); test.pupAge(); }}
Tämä tuottaa seuraavan tuloksen −
Lähtö
Puppy age is: 7
esimerkki
seuraava esimerkki käyttää ikää alustamatta sitä, joten se antaisi virheen laadintahetkellä.
public class Test { public void pupAge() { int age; age = age + 7; System.out.println("Puppy age is : " + age); } public static void main(String args) { Test test = new Test(); test.pupAge(); }}
Tämä tuottaa seuraavan virheen kootessaan sitä −
Lähtö
Test.java:4:variable number might not have been initializedage = age + 7; ^1 error
instanssimuuttujat
-
instanssimuuttujat ilmoitetaan luokassa, mutta menetelmän, konstruktorin tai minkä tahansa lohkon ulkopuolella.
-
kun kasassa olevalle objektille on varattu avaruus, kullekin instanssimuuttujan arvolle luodaan paikka.
-
instanssimuuttujat syntyvät, kun objekti luodaan käyttämällä avainsanaa ”uusi” ja tuhotaan, kun objekti tuhotaan.
-
Instanssimuuttujilla on arvoja, joihin on viitattava useammalla kuin yhdellä menetelmällä, konstruktiolla tai lohkolla tai olion tilan olennaisilla osilla, joiden on oltava läsnä koko luokassa.
-
instanssimuuttujat voidaan ilmoittaa luokkatasolla ennen käyttöä tai sen jälkeen.
-
Access-modifioijille voidaan antaa esimerkiksi muuttujia.
-
instanssimuuttujat ovat näkyvissä kaikille luokan menetelmille, konstruktoreille ja lohkoille. Yleensä on suositeltavaa tehdä näistä muuttujista yksityisiä (pääsytaso). Aliluokille voidaan kuitenkin antaa näkyvyys näille muuttujille access-modifioijien avulla.
-
Instanssimuuttujilla on oletusarvot. Numeroille oletusarvo on 0, Booleille se on epätosi ja objektiviittauksille se on nolla. Arvot voidaan määrittää ilmoituksen aikana tai rakentajan sisällä.
-
Instanssimuuttujiin pääsee suoraan kutsumalla muuttujan nimeä luokan sisällä. Kuitenkin staattisissa menetelmissä (kun instanssimuuttujille annetaan esteettömyys) niitä tulee kutsua käyttäen täysin hyväksyttyä nimeä. ObjectReference.Vaihteleva nimi.
esimerkki
import java.io.*;public class Employee { // this instance variable is visible for any child class. public String name; // salary variable is visible in Employee class only. private double salary; // The name variable is assigned in the constructor. public Employee (String empName) { name = empName; } // The salary variable is assigned a value. public void setSalary(double empSal) { salary = empSal; } // This method prints the employee details. public void printEmp() { System.out.println("name : " + name ); System.out.println("salary :" + salary); } public static void main(String args) { Employee empOne = new Employee("Ransika"); empOne.setSalary(1000); empOne.printEmp(); }}
tästä saadaan seuraava tulos −
Lähtö
name : Ransikasalary :1000.0
Luokka/staattiset muuttujat
-
myös staattiset muuttujat tunnetaan staattisella avainsanalla luokassa, mutta menetelmän, rakentajan tai lohkon ulkopuolella.
-
jokaisesta luokkamuuttujasta olisi vain yksi kappale luokkaa kohden riippumatta siitä, kuinka monta oliota siitä luodaan.
-
staattisia muuttujia käytetään harvoin muuten kuin julistamalla ne vakioiksi. Vakiot ovat muuttujia, jotka ilmoitetaan julkisina/yksityisinä, lopullisina ja staattisina. Vakiomuuttujat eivät koskaan muutu alkuarvostaan.
-
staattiset muuttujat tallennetaan staattiseen muistiin. On harvinaista käyttää muita kuin lopullisiksi ilmoitettuja staattisia muuttujia, joita käytetään joko julkisena tai yksityisenä vakiona.
-
staattiset muuttujat syntyvät ohjelman käynnistyessä ja tuhoutuvat ohjelman pysähtyessä.
-
näkyvyys on samanlainen kuin instanssimuuttujilla. Useimmat staattiset muuttujat on kuitenkin ilmoitettu julkisiksi, koska niiden on oltava luokan käyttäjien saatavilla.
-
oletusarvot ovat samat kuin instanssimuuttujat. Numeroille oletusarvo on 0, Booleille se on epätosi, ja objektiviittauksille se on nolla. Arvot voidaan määrittää ilmoituksen aikana tai rakentajan sisällä. Lisäksi arvot voidaan määrittää erityisissä staattisissa alustuslohkoissa.
-
staattisia muuttujia pääsee kutsumaan luokkanimellä ClassName.Vaihteleva nimi.
-
kun luokkamuuttujat julistetaan julkisiksi staattisiksi lopullisiksi, muuttujien nimet (vakiot) ovat kaikki suuraakkosin. Jos staattiset muuttujat eivät ole julkisia ja lopullisia, nimeämis syntaksi on sama kuin esimerkiksi ja paikalliset muuttujat.
esimerkki
import java.io.*;public class Employee { // salary variable is a private static variable private static double salary; // DEPARTMENT is a constant public static final String DEPARTMENT = "Development "; public static void main(String args) { salary = 1000; System.out.println(DEPARTMENT + "average salary:" + salary); }}
tästä saadaan seuraava tulos −
Lähtö
Development average salary:1000
Huomautus − Jos muuttujiin pääsee ulkopuolisesta luokasta, vakioon tulee päästä työntekijänä.Osasto
mitä seuraavaksi?
tässä luvussa on jo käytetty access-muokkaajia (Julkinen & yksityinen). Seuraavassa luvussa selitetään yksityiskohtaisesti Käyttöoikeusmodifioijat ja ei-Käyttöoikeusmodifioijat.