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关键字
类的静态变量:所有的对象共享一个变量
静态方法:不用创建对象就能引用该方法,直接类名.该方法就行

posted @ 2026-03-24 19:16  丿知名不具  阅读(2)  评论(0)    收藏  举报