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)