JAVA中的传引用笔记

Java只有值传递

测试用例

No1

/**
 * Theme:数组的传递
 * Author: Sunyi
 * Date: 2020/11/7 16:35
 * Conclusion:本质上类似于通过"."操作符修改对象的值
 **/
public class Test1
{
    public static void main(String[] args)
    {
        int [] array=new int[5];
        for(int i=0; i<4; i++)
            array[i]=i;
        print(array);
        change(array);
        print(array);
    }
    public static void change(int [] a)
    {
        a[0]=1122;
    }
    public static void print(int [] a)
    {
        for(int e:a)
            System.out.print(e+" ");
        System.out.println();
    }
}

结果:
0 1 2 3 4 
1122 1 2 3 4 

No2

package test2;

public class Point
{
    int x,y;
    public Point(){};
    public Point(int a, int b)
    {
        this.x=a;
        this.y=b;
    }
    public void printPoint()
    {
        System.out.println("x: "+this.x+" y: "+this.y);
    }
}

package test2;
/**
 * Theme:对象的传递
 * Author: Sunyi
 * Date: 2020/11/17 17:25
 * conclusion:通过拷贝引用传递(两个引用指向同一个地址)
 **/
public class Test2
{
    public static void main(String[] args)
    {
        Point n1=new Point(1,1);
        n1.printPoint();
        change(n1);
        n1.printPoint();
    }
    public static void change(Point p)
    {
        Point p2=new Point(2, 2);
        p=p2;
//        p.x=2; //用.可直接修改,因为指向同一内存地址
//        p.y=2;
    }
}

结果:
x: 1 y: 1
x: 1 y: 1

No3

/**
 * Theme:String类型的传递
 * Author: Sunyi
 * Date: 2020/11/17 17:48
 * conclusion:本质上也是拷贝引用,所以不会改变实参(String 原型为 final static char value[])
 **/
public class Test3
{
    public static void main(String[] args)
    {
        String st="dsfsd";
        change(st);
        System.out.println(st);
    }
    public static void change(String s)
    {
        s="aaaaaaaaaaaaaaaaaa";
    }
}

结果:
dsfsd

总结

JAVA中只有值传递
传递对象时传递的是对象引用的拷贝
(即一个新的同种类型的引用,两个引用指向同一个地址)

收藏相关博客:

java方法传String类型的参数时,为啥方法对值的修改没有在方法之外生效?

为什么说Java中只有值传递

Java中方法调用参数传递的方式是传值,尽管传的是引用的值而不是对象的值。(Does Java pass by reference or pass by value?)

个人笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值