String Immutability in Java
Pyyhkäise näyttääksesi valikon
Tiedät jo, että String-tyyppiset muuttujat tallentavat tekstiä, kuten asiakasnimiä, tuotenimiä ja viestejä. Yksi asia, joka tekee String-olioista erityisiä Javassa, on niiden muuttumattomuus.
Muuttumattomuus tarkoittaa, että kun String-olio on luotu, sen sisältöä ei voi muuttaa. Kaikki toiminnot, jotka vaikuttavat muuttavan merkkijonoa, luovatkin taustalla uuden String-olion.
Esimerkki
Main.java
123456789101112131415package com.example; public class Main { public static void main(String[] args) { int stock = 20; String drink = "Espresso"; stock = 15; drink = "Cappuccino"; System.out.println(stock); // 15 System.out.println(drink); // Cappuccino } }
Vaikka molemmat muuttujat uudelleenmääriteltiin, ne käyttäytyvät sisäisesti eri tavoin. int-tyypissä muuttuja tallentaa arvon suoraan — uudelleenmäärittely vain korvaa sen. Mutta String on viitetyyppi, eli muuttuja tallentaa osoitteen, joka viittaa muistissa olevaan String-olioon. Kun drink = "Cappuccino" asetetaan, Java ei muuta "Espresso"-oliota — se luo täysin uuden String-olion ja saa drink-muuttujan viittaamaan siihen. Alkuperäinen "Espresso"-olio pysyy muuttumattomana.
Miten se toimii vaihe vaiheelta
String drink = "Espresso";
Java luo String-olion "Espresso" ja drink viittaa siihen.
drink = "Cappuccino";
Java luo uuden String-olion "Cappuccino", ja drink viittaa nyt uuteen olioon. "Espresso" pysyy koskemattomana.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
String Immutability in Java
Tiedät jo, että String-tyyppiset muuttujat tallentavat tekstiä, kuten asiakasnimiä, tuotenimiä ja viestejä. Yksi asia, joka tekee String-olioista erityisiä Javassa, on niiden muuttumattomuus.
Muuttumattomuus tarkoittaa, että kun String-olio on luotu, sen sisältöä ei voi muuttaa. Kaikki toiminnot, jotka vaikuttavat muuttavan merkkijonoa, luovatkin taustalla uuden String-olion.
Esimerkki
Main.java
123456789101112131415package com.example; public class Main { public static void main(String[] args) { int stock = 20; String drink = "Espresso"; stock = 15; drink = "Cappuccino"; System.out.println(stock); // 15 System.out.println(drink); // Cappuccino } }
Vaikka molemmat muuttujat uudelleenmääriteltiin, ne käyttäytyvät sisäisesti eri tavoin. int-tyypissä muuttuja tallentaa arvon suoraan — uudelleenmäärittely vain korvaa sen. Mutta String on viitetyyppi, eli muuttuja tallentaa osoitteen, joka viittaa muistissa olevaan String-olioon. Kun drink = "Cappuccino" asetetaan, Java ei muuta "Espresso"-oliota — se luo täysin uuden String-olion ja saa drink-muuttujan viittaamaan siihen. Alkuperäinen "Espresso"-olio pysyy muuttumattomana.
Miten se toimii vaihe vaiheelta
String drink = "Espresso";
Java luo String-olion "Espresso" ja drink viittaa siihen.
drink = "Cappuccino";
Java luo uuden String-olion "Cappuccino", ja drink viittaa nyt uuteen olioon. "Espresso" pysyy koskemattomana.
Kiitos palautteestasi!