Näkyvyysalue ja elinkaari
Ymmärtäkää, missä muuttujat ovat näkyvissä (näkyvyysalue) ja kuinka kauan ne ovat olemassa (elinkaari): lohkot, silmukat, metodit, kentät, nimen peittäminen ja final-parametrit.
Näkyvyysalue ja elinkaari on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/3. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 3 oppituntia.
Näkyvyysalue ja elinkaari
Näkyvyysalue kertoo, missä nimi eli muuttuja on näkyvissä. Elinkaari kertoo, kuinka kauan muuttuja on olemassa. Tässä tutustutaan lohkon ja silmukan näkyvyysalueisiin, metodin paikallisiin muuttujiin, luokan kenttiin ja peittämissääntöihin.
Lohkon näkyvyysalue
Lohkon näkyvyysalue: aaltosulkeiden sisällä määritetty muuttuja näkyy vain kyseisten aaltosulkeiden sisällä.
public class Main {
public static void main(String[] args) {
int a = 10; // visible in main
{
int b = 20; // visible only inside this block
System.out.println("inside block: a=" + a + ", b=" + b);
}
System.out.println("outside block: a=" + a);
// System.out.println(b); // would NOT compile: b is out of scope
}
}
Silmukan näkyvyysalue
Silmukan näkyvyysalue: for-otsakkeessa määritetty silmukkamuuttuja näkyy vain silmukan rungon sisällä.
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 3; i = i + 1) {
System.out.println("i in loop = " + i);
}
// System.out.println(i); // would NOT compile: i is scoped to the loop
int j;
for (j = 0; j < 2; j = j + 1) {
System.out.println("j in loop = " + j);
}
System.out.println("j after loop = " + j); // OK: j declared outside
}
}
Kentät vs. paikalliset muuttujat
Elinkaari: luokan ja staattiset kentät säilyvät kutsujen välillä; paikalliset muuttujat luodaan uudelleen jokaisella kutsulla ja hävitetään metodin päättyessä.
public class Main {
// static field (class-level): lives for the program lifetime
static int counter = 0;
static void tick() {
int local = 100; // local: created each call, dies when method returns
counter = counter + 1;
System.out.println("tick: counter=" + counter + ", local=" + local);
}
public static void main(String[] args) {
tick();
tick();
tick();
System.out.println("final counter=" + counter);
}
}
Nimen peittäminen
Peittäminen: sisempi määrittely, esimerkiksi parametri tai paikallinen muuttuja, voi peittää ulomman samannimisen tunnisteen. Piilotettuun kenttään pääsee käsiksi muodolla ClassName.field tai instanssimetodeissa muodolla this.field.
public class Main {
static String label = "FIELD"; // class field
static void demo(String label) { // parameter shadows field name
System.out.println("param label = " + label); // uses parameter
{
String labelInner = "INNER"; // new name in inner block
System.out.println("inner block labelInner = " + labelInner);
System.out.println("still param label = " + label);
}
System.out.println("field via class name = " + Main.label); // refer to field explicitly
}
public static void main(String[] args) {
demo("PARAM");
}
}
Final ja arvon välitys
final-parametreille ei voi sijoittaa uutta arvoa. Javassa parametrit välitetään arvona: parametrin uudelleensijoittaminen ei muuta kutsujan muuttujaa.
public class Main {
// final parameter cannot be reassigned inside the method
static int inc(final int n) {
// n = n + 1; // would NOT compile if uncommented
return n + 1; // safe: return a new value
}
static void reassign(int x) {
x = 999; // reassignes the local copy; caller variable is unchanged
}
public static void main(String[] args) {
int a = 5;
int b = inc(a);
System.out.println("a=" + a + ", b=inc(a)=" + b);
reassign(a);
System.out.println("after reassign(a): a is still " + a);
}
}
Näkyvyysalueen ja elinkaaren tarkistus
Pikatarkistus: Mikä näkyvyysaluetta ja elinkaarta koskeva väite on TOSI?
Kertaus ja seuraava aihe
Kertaus: Harjoiteltiin lohkon ja silmukan näkyvyysalueita, kenttiä ja paikallisia muuttujia, nimen peittämistä sekä final-parametreja. Seuraavaksi siirrytään suunnittelu- ja uudelleenkäyttökuvioihin osiossa A2.2.
Opi Java tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 104
- Oppitunnit
- 374
Usein kysytyt kysymykset
Onko oppitunti ”Näkyvyysalue ja elinkaari” ilmainen?
Kyllä – oppitunnin ”Näkyvyysalue ja elinkaari” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 3 oppituntia.
Mitä opin oppitunnilla ”Näkyvyysalue ja elinkaari”?
Ymmärtäkää, missä muuttujat ovat näkyvissä (näkyvyysalue) ja kuinka kauan ne ovat olemassa (elinkaari): lohkot, silmukat, metodit, kentät, nimen peittäminen ja final-parametrit. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/3.
Kuinka kauan ”Näkyvyysalue ja elinkaari”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?
Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Metodien ja parametrien määrittäminen
- Paluuarvot ja ylikuormitus
- Näkyvyysalue ja elinkaari