Java中的三大类型:
-
基本类型:
- 包括
int
,char
,float
,double
,boolean
等。 - 它们是值传递,即在方法调用时,传递的是实际的值。
- 包括
-
包装类型:
-
包括
Integer
,Character
,Float
,Double
,Boolean
等。 -
它们是引用传递,但由于它们是不可变的(immutable),一旦创建后值不会改变。
String s = "1"; System.out.println(s); // 输出 "1" s = "2"; // 前后两个s已经不是同一个对象了,因为String是不可变类型
-
-
类对象等类型:
- 包括数组和用户自定义类对象。
- 它们是引用传递,传递的是对象的引用。
引用传递的特性:
- 对于引用传递,只要更改对象的属性值或数组的元素值,所有引用该对象的地方都会看到这些变化。
- 但是,如果在方法内部改变引用本身,使其指向一个新对象,那么这种改变不会影响原始对象引用。
方法参数是引用的副本:
- 方法参数传递的是引用的副本。这意味着在方法内部,引用的副本指向了同一个对象。
- 如果在方法内部改变引用副本的属性或数组的元素,那么原始对象也会改变。
- 但是,如果在方法内部使引用副本指向一个新对象,那么这种改变不会影响原始对象引用。
示例解释:
java复制代码public static void main(String[] args) {
int[][] arr = new int[2][2];
arr[0][0] = 1;
arr[0][1] = 2;
arr[1][0] = 3;
arr[1][1] = 4;
test(arr);
System.out.println(arr[0][0]); // 输出1
}
public static void test(int[][] arr){
int[][] arr2 = new int[arr.length][arr[0].length];
arr = arr2;
}