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