Unterschied zwischen final und Immutable in Java

Was ist der Unterschied zwischen final und Immutable in Java?

Ich hatte kürzlich die Gelegenheit, Guavas unveränderliche Liste zu verwenden. Was ist der Unterschied zwischen unveränderlich und endgültig? Ich habe mich gefragt und es untersucht.

Eigenschaften von unveränderlich

-Verbieten Sie, den Wert des Objekts selbst zu ändern ・ Das Referenzziel kann geändert werden

Merkmale von final

・ Es ist verboten, das Referenzziel zu ändern ・ Es ist möglich, den Wert der Variablen selbst zu ändern

Lassen Sie uns nun in Java die Verwendung von Immutable's typischem String und Mutable StringBuilder überprüfen.

class Main
{
	public static void main (String[] args) throws java.lang.Exception
	{
		 final String str = "apple";
		 final StringBuilder sb= new StringBuilder("ringo");
		
 		str = str + "ringo"; //Kompilierungsfehler. Von String+Begleitet durch Ändern des Referenzziels.
                String s = "ringo";
                str = s;             //Kompilierungsfehler
		sb.append("apple");
		sb = new StringBuilder("ringo"); ///Kompilierungsfehler. Ändern Sie das Referenzziel.
		System.out.println(str);
		System.out.println(sb);
	}
}

Es ist relativ einfach, auf diese Weise zu vergleichen, aber ich habe falsch verstanden, dass der Wert von final unveränderlich war, und überraschenderweise gab es keinen japanischen Artikel, also habe ich ihn geschrieben.

Recommended Posts

Unterschied zwischen final und Immutable in Java
[Java] Unterschied zwischen "endgültiger Variable" und "unveränderlichem Objekt"
[Java] Unterschied zwischen statischem final und final in Mitgliedsvariablen
Unterschied zwischen int und Integer in Java
[Java] Unterschied zwischen == und gleich
Unterschied zwischen next () und nextLine () in Java Scanner
[Java] Unterschied zwischen Hashmap und HashTable
[JAVA] Unterschied zwischen Abstract und Interface
[Java] Unterschied zwischen Array und ArrayList
[Java] Unterschied zwischen Closeable und AutoCloseable
[Java] Unterschied zwischen StringBuffer und StringBuilder
[Java] Unterschied zwischen Länge, Länge () und Größe ()
Ist die Kurzschlussauswertung wirklich schnell? Unterschied zwischen && und & in Java
Unterschied zwischen pop () und peek () im Stapel
[Für Anfänger] Unterschied zwischen Java und Kotlin
Unterschied zwischen getText () und getAttribute () von Selen
Unterschied zwischen "|| =" und "instance_variable_defined?" Im Ruby-Memo
Unterschied zwischen Arrylist und verknüpfter Liste in Java
Unterschied zwischen EMPTY_ELEMENTDATA und DEFAULTCAPACITY_EMPTY_ELEMENTDATA in ArrayList
[Java] Unterschied zwischen Intstream-Bereich und rangeClosed
Unterschied zwischen vh und%
Unterschied zwischen i ++ und ++ i
[Java] Verstehe den Unterschied zwischen List und Set
Unterscheiden Sie in Java zwischen positiven und negativen Zahlen
Verstehen Sie den Unterschied zwischen int und Integer und BigInteger in Java und float und double
Unterschied zwischen Produkt und Variante
[Java] Unterschied zwischen gleich und == in einer Zeichenfolge, die ein Referenztyp ist
Unterschied zwischen redirect_to und render
Unterschied zwischen redirect_to und render
Unterschiede zwischen Klassen und Instanzen in Ruby
Unterschied zwischen neu und in Rais Action Controller erstellen
Unterschied zwischen CUI und GUI
Unterschied zwischen Variablen und Instanzvariablen
Unterschied zwischen Mockito-Core und Mockito-All
[JAVA] Was ist der Unterschied zwischen Schnittstelle und Zusammenfassung? ?? ??
Unterschied zwischen Klasse und Instanz
Unterschied zwischen Bundle und Bundle-Installation
Unterschied zwischen ArrayList und LinkedList
Unterschied zwischen render und redirect_to
Unterschied zwischen List und ArrayList
Java Generics T und? Unterschied
Unterschied zwischen .bashrc und .bash_profile
Unterschied zwischen StringBuilder und StringBuffer
Unterschied zwischen render und redirect_to
[Java-Anfänger] Unterschied zwischen Länge und Länge () ~ Ich weiß nicht ~
Unterschied zwischen Java und JavaScript (wie man den Durchschnitt findet)
Unterschied zwischen Element 0, Null und leerem Zeichen (Check-in-Liste)
[Java] Unterschied zwischen der Zuweisung der Basistypvariablen und der Zuordnung der Referenztypvariablen
[Java] Überprüfen Sie den Unterschied zwischen orElse und orElseGet mit IntStream
Denken Sie über die Unterschiede zwischen Funktionen und Methoden nach (in Java)
Unterschiede im Umgang mit Zeichenfolgen zwischen Java und Perl
[Java] Unterschied zwischen Stapelüberlauffehler und Speichermangel
[Ruby] Unterschied zwischen get und post
Unterschied zwischen Instanzmethode und Klassenmethode
Unterschied zwischen Schnittstelle und abstrakter Klasse