值传递和引用传递

Posted 奋斗的蜗牛cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了值传递和引用传递相关的知识,希望对你有一定的参考价值。

1、java中的数组类型:

  基本类型:byte short int float long double char boolean

  引用类型:类类型,接口类型,数组类型。

  基本类型的变量保存原始值,它代表的是数值本身,

  引用类型的变量保存引用值,“引用值”指向内存空间地址,代表某个对象的引用,而不是对象本身,引用值指向栈中存放的地址,而对象在堆中。

2、基本类型和引用类型的区别

  基本数据类型在声明时系统就给它分配空间,这里面包括数据空间,引用类型不同,声明时只给变量分配引用空间,不分配数据空间。

3、引用传递和值传递

  值传递:

  方法调用时,实际参数的值传给方法的形参,形参收到的只是实参的一个副本,实际参数的值没有变化,在方法中对形参的改变不影响实参的值。

  引用传递:

  也称为传地址。方法调用时,实际参数的地址传给形参,因此形参指向的对象和实参指向的对象相同,因此方法中对形参的改变会影响实参的值。

  例子:

  

public class Object {
    public int b = 99;
}

分别传参基本数据类型和引用数据类型

public class BasicAndObject {
    public void test1(int a){
        a=a++;
        System.out.println("test1方法中的:"+a);
    }
    public void test2(Object obj){
        obj.b = 100;
        System.out.println("test2方法中的:"+obj.b );
    }
    public static void main(String[] args) {
        BasicAndObject ba = new BasicAndObject();
        int a = 99;
        ba.test1(a);
        System.out.println("main函数中的"+a);
        
        Object o = new Object();
        ba.test2(o);
        System.out.println("main函数中的"+o.b);
    }
}

结果:

test1方法中的:99
main函数中的99
test2方法中的:100
main函数中的100

 

从结果中,值传递没有改变原来实参的值,但是引用传递改变了原来对象的值。

  

以上是关于值传递和引用传递的主要内容,如果未能解决你的问题,请参考以下文章

值传递和引用传递的区别

Android 我应该在异步任务中将片段作为弱引用传递吗?

Python 值传递和引用传递

值传递和引用传递

java值传递和引用传递

Python 值传递和引用传递