八大基本数据类型:
整数型(byte、short、int、long)
浮点型(float、double)
字符型(char)
布尔型(boolean)
数据的默认值和占字节数:
类型 |
默认值 |
占字节 |
整数型(byte) |
0 |
1 |
整数型(short) |
0 |
2 |
整数型(int) |
0 |
4 |
整数型(long) |
0L |
8 |
浮点型(float) |
0.0f |
4 |
浮点型(double) |
0.0d |
8 |
字符型(char) |
‘\u0000’ |
2 |
布尔型(boolean) |
false |
1 |
装箱与拆箱:
装箱:是指基本数据类型转换为对应的包装类型, 例如:int转为为Integer包装类型
拆箱:是指包装类型转换为对应的基本数据类型,例如:Integer转换为int基本数据类型
四大引用类型:
数组
类
接口
字符串
数据类型参数传递:
例:
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());
}
}
执行结果:
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
总结:
1.当基本数据类型作为方法形参时,在方法内修改形参的值不影响实参的值。
2.当引用类型作为方法形参时,在方法内修改形参的地址(指向)不影响实参,因此形参变量和实参变量分别指向不同的堆区。
3.当引用类型作为方法形参时,在方法内修改形参的值影响实参的值,因此形参变量和实参变量共享同一块堆区。
参考文献: