Java学习 2026.03.24
java的值传递
public class Main {
static void tryChange(int x) {
x = 999;
System.out.println("方法内 x = " + x);
}
static void tryChangeArray(int[] arr) {
arr[0] = 999;
System.out.println("方法内 arr[0] = " + arr[0]);
}
public static void main(String[] args) {
// 基本类型:传递值的副本,修改不影响原变量
int a = 10;
tryChange(a);
// 输出:a = 10(没变)
System.out.println("a = " + a);
// 引用类型:传递的是引用的副本,但指向同一个对象
// 所以通过引用修改对象的内容,外面也能看到
int[] nums = {1, 2, 3};
tryChangeArray(nums);
// 输出:nums[0] = 999(变了)
System.out.println("nums[0] = " + nums[0]);
}
}
trychange方法不改变a的值,因为是基础类型,传递的是值的副本,等于说a(0x100),x(0x200),值都为10,但trychangearry方法改变了对象的值,数组arr【】是引用类型,引用类型传递的是地址,也就是说nums和arr的地址是一样的,指向同一个对象,所以你改值,两个都修改了。
形象的来看都是传递“盒子”里的副本,基础类型的副本是值,,但引用类型的副本是地址。
关于static关键字
类的静态变量:所有的对象共享一个变量
静态方法:不用创建对象就能引用该方法,直接类名.该方法就行

浙公网安备 33010602011771号