0
点赞
收藏
分享

微信扫一扫

java方法参数传递,对传入值的影响

心智的年轮 2022-03-11 阅读 66
java

文章目录

1、基本类型

都是拷贝,当方法结束之后,变量销毁,不会影响传入变量的值

2、基本类型演变过来的

Integer,Double等等,虽然不是基本基本类型,但是也是拷贝,当方法结束之后,变量销毁,不会影响传入变量的值。记住String不是由基本类型演变过来的,但是也是拷贝。

3、自定义的类

都是引用,也就是说,当方法结束之后,对象不会销毁,会影响传入变量的值

4、本人代码和执行结果

package com.books.tool.test;

public class Temp {
    public Integer a;
    public  Temp(Integer b){
        this.a=b;
    }
    //直接交换值
    public static void swap(Temp t1,Temp t2){
        Integer temp=t1.a;
        t1.a=t2.a;
        t2.a= temp;
    }
    public static void swapInteger(Integer t1,Integer t2){
        Integer temp=t1;
        t1=t2;
        t2= temp;
    }

    public static void main(String[] args) {
        Temp t1=new Temp(1);
        Temp t2=new Temp(2);
        System.out.println("交换之前t1的值"+t1.a);
        System.out.println("交换之前t2的值"+t2.a);
        swap(t1,t2);
        System.out.println("交换之后t1的值"+t1.a);
        System.out.println("交换之后t2的值"+t2.a);
        System.out.println("--------------------------");
        Integer i1=1;
        Integer i2=2;
        System.out.println("Integer交换之后i1的值"+i1);
        System.out.println("Integer交换之后i2的值"+i2);
        swapInteger(i1,i2);
        System.out.println("Integer交换之后i1的值"+i1);
        System.out.println("Integer交换之后i2的值"+i2);


    }

}

执行结果
在这里插入图片描述
在这里插入图片描述

5、个人的看法与猜想,拷贝或者是引用可能和"="有关系

        Temp t1=new Temp(1);
        Temp t2=t1;     //属于引用,t1和t2都是指向同一个地址空间,t1改,t2的值也会变      
        Integer i1=250;
        Integer i2=i1;   //属于拷贝,i1改,指向不同的地址,i2不会变
        //这里有个隐藏条件Integer的值大于127或者小于-127
举报

相关推荐

0 条评论