Java primitive Typen, Referenztypen, unveränderlich, veränderlich

Grundlegendes zu Java-Grundtypen, Referenztypen, Unveränderlich und Veränderbar zusammen

Ich lerne Java Silver, war aber verwirrt, weil dieser Bereich auseinander kam, und versuchte, mein eigenes Verständnis zusammenzufassen.

Primitiver Typ

Type Value Bit
boolean Boolescher Wert 1
byte ganze Zahl 8
short ganze Zahl 16
char Brief 16
int ganze Zahl 32
float Gleitkomma 32
long ganze Zahl 64
double Gleitkomma 64

Referenztyp

Dies umfasst hauptsächlich Klassen, Strings und StringBuilder.

Let's try Lassen Sie es uns tatsächlich überprüfen.

Main.java


class Codechef
{
	public static void main (String[] args) throws java.lang.Exception
	{
		StringBuilder sb = new StringBuilder("apple");
		sample(sb);
		System.out.println(sb); // "apple orange"
		
		StringBuilder ssb = new StringBuilder("apple");
		sample5(ssb);
		System.out.println(ssb); // "apple"
		
		String s = "apple";
		String t = sample2(s);
		System.out.println(s); // "apple"
		System.out.println(t); // "apple orange"
		
		int i = 1;
		sample3(i);
		System.out.println(i); //1

		
	}	
		public static StringBuilder sample(StringBuilder sb) {
		    return sb.append(" orange");
		}
		
		public static String sample2(String s) {
		    return s+" orange";
		}
		
		public static int sample3(int i) {
		    return i+10;
		}
	    
	    public static StringBuilder sample5(StringBuilder sb) {
	        return new StringBuilder(sb+" orange");
	    }
}

Immutable vs Mutable Was ich hier bestätigen möchte, ist der Unterschied zwischen Immutable String und Mutable StringBuilder auch bei demselben Referenztyp.

Im folgenden Code ist "apple orange" für sb enthalten, was bedeutet, dass der im Argument übergebene StringBuilder als Referenz übergeben wird, nicht der Wert "apple", sondern die Adresse von sb. Der Wert von sb selbst hat sich geändert.

        StringBuilder sb = new StringBuilder("apple");
        sample(sb);
        System.out.println(sb); // "apple orange"

    public static String sample2(String s) {
            return s+" orange";
        }

Andererseits ist String auch ein Referenztyp, aber der an das Argument übergebene Wert von String hat sich nicht geändert. Warum. Dies liegt daran, dass StringBuilder veränderlich und String unveränderlich ist. Für String kann der bei der Initialisierung einmal zugewiesene Wert danach nicht mehr geändert werden. Wenn Sie also versuchen, den ursprünglichen Wert von String mit + usw. zu ändern, wird intern eine neue Instanz zurückgegeben und das Referenzziel zuerst zugewiesen Der Wert von ändert sich nicht. Wenn Sie den geänderten Wert verwenden möchten, haben Sie keine andere Wahl, als eine neue String-Variable zu erstellen und sie wie unten gezeigt zuzuweisen.

        String s = "apple";
        String t = sample2(s);
        System.out.println(s); // "apple"
        System.out.println(t); // "apple orange"

        public static String sample2(String s) {
            return s+" orange";
        }

Wie ich bereits erwähnt habe, ist int ein primitiver Typ, daher ist es selbstverständlich. Da es sich um den tatsächlichen Wert handelt, der an das Argument übergeben wird, nicht um die Adresse, auf die verwiesen wird, wird nur der Wert für den an das Argument übergebenen Wert zurückgegeben, sodass sich der ursprüngliche Wert nicht ändert.

Recommended Posts

Java primitive Typen, Referenztypen, unveränderlich, veränderlich
Informationen zu primitiven Java-Typen und Referenztypen
Ich habe Java-Primitivtypen untersucht
Grundlegende Datentypen und Referenztypen (Java)
Java-Array-Variablen sind Referenztypen
Java-Basisdatentypen und Referenztypen
Java8-Methodenreferenz
Java8-Methodenreferenz
JAVA Referenzmaterialien
Meine Java-Referenz
Informationen zu Java-Datentypen (insbesondere primitiven Typen) und Literalen
veränderliche und unveränderliche Objekte
Informationen zum Java-Grunddatentyp- und Referenztypspeicher
Zusammenfassung der primitiven Java-Spezialisierung
[Java] Hauptdatentypen
Äquivalenter Vergleich von Java-Wrapper-Klasse und primitivem Typ
[Java] Variablen- und Typtypen
Java-Grunddatentypen
Generieren Sie Stream aus einem Array primitiver Typen in Java
Informationen zu Java Class Loader-Typen
Java Learning 1 (Lernen Sie verschiedene Datentypen)