Wissensüberprüfung: acht grundlegende Datentypen, vier Referenztypen

Acht grundlegende Datentypen:

  • Integer-Typ (Byte, Short, Int, Long)

  • Gleitkommatyp (Float, Double)

  • Zeichentyp (char)

  • Boolescher Wert

Der Standardwert und die Anzahl der von den Daten belegten Bytes:

Typ

Standardeinstellungen

Bytes

Ganzzahltyp (Byte)

0

1

Integer-Typ (kurz)

0

2

Ganzzahltyp (int)

0

4

Integer-Typ (lang)

0L

8

Gleitkommatyp (Float)

0,0f

4

Gleitkommatyp (doppelt)

0,0d

8

Zeichentyp (char)

'\u0000'

2

Boolescher Wert

FALSCH

1

Ein- und Auspacken:

Boxen: Bezieht sich auf die Konvertierung grundlegender Datentypen in entsprechende Verpackungstypen, zum Beispiel: Konvertieren von int in den Verpackungstyp Integer

Unboxing: Bezieht sich auf die Konvertierung des Verpackungstyps in den entsprechenden Basisdatentyp, zum Beispiel: Integer wird in den Basisdatentyp int konvertiert

Vier Arten von Zitaten:

  • Array

  • Art

  • Schnittstelle

  • Zeichenfolge

Übergabe von Datentypparametern:

Beispiel:

public class DataType {
    public static void main(String[] args) {
        int var1 = 100;
        String var2 = "C++";
        String[] var3 = new String[]{"张三","王五"};

        System.out.println("var1: "+var1);
        System.out.println("var2: "+ var2);
        System.out.println("var3: "+ Arrays.toString(var3));
        System.out.println("var2地址值: "+var2.hashCode());
        System.out.println("var3地址值: "+var3.hashCode());

        new DataType().change(var1, var2, var3);

        System.out.println("===================方法后===================");
        System.out.println("var1: "+var1);
        System.out.println("var2: "+ var2);
        System.out.println("var3: "+ Arrays.toString(var3));
        System.out.println("var2地址值: "+var2.hashCode());
        System.out.println("var3地址值: "+var3.hashCode());
    }

    public void change(int var1, String var2, String[] var3){
        var1 = 500;
        var2 = "Java";
        var3[0] = "李四";

        System.out.println("===================方法中===================");
        System.out.println("var1方法内: "+var1);
        System.out.println("var2方法内: "+ var2);
        System.out.println("var3方法内: "+ Arrays.toString(var3));
        System.out.println("var2修改形参后的地址值: "+var2.hashCode());
        System.out.println("var3修改形参后的地址值: "+var3.hashCode());
    }
}

Ergebnisse der:

var1: 100
var2: C++
var3: [张三, 王五]
var2地址值: 65763
var3地址值: 940553268

===================方法中===================
var1方法内: 500
var2方法内: Java
var3方法内: [李四, 王五]
var2修改形参后的地址值: 2301506
var3修改形参后的地址值: 940553268

===================方法后===================
var1: 100
var2: C++
var3: [李四, 王五]
var2地址值: 65763
var3地址值: 940553268

Zusammenfassen:

1. Wenn der Basisdatentyp als Methodenparameter verwendet wird, hat die Änderung des Werts des formalen Parameters innerhalb der Methode keinen Einfluss auf den Wert des tatsächlichen Parameters.

2. Wenn der Referenztyp als Methodenparameter verwendet wird, wirkt sich das Ändern der Adresse (Zeiger) des formalen Parameters in der Methode nicht auf den tatsächlichen Parameter aus, sodass die formale Parametervariable und die tatsächliche Parametervariable auf unterschiedliche Heapbereiche verweisen.

3. Wenn der Referenztyp als Methodenparameter verwendet wird, wirkt sich die Änderung des Werts des formalen Parameters in der Methode auf den Wert des tatsächlichen Parameters aus, sodass die formale Parametervariable und die tatsächliche Parametervariable denselben Heap-Bereich gemeinsam nutzen.

Verweise:

Übergabe von Java-Referenztypparametern (absolut verständlich)

Java-Basisdatentypen (vier Referenzdatentypen, acht Datentypen)

Ich denke du magst

Origin blog.csdn.net/ZWP_990527/article/details/128763858
Empfohlen
Rangfolge