JAVA之 值传递和引用传递

原创 2017年12月07日 21:44:57

方法参数的传递有两种方式:值传递和引用传递

值传递:就是把这个值拷贝一份给方法中使用,对于基本数据类型的参数都是这种传递方式。

引用传递:就是把传递的这个地址拷贝一份给方法中使用,
其实也是拷贝值,比如一个show方法是这样定义的:
public static void show(int[] a) ,对应调用应该是show(a)(比如我现在已经有一个int类型的a数组了),这个a也是一个值,但是是一个地址值,指向a数组下标为0的a[0]的位置。然后在show(a)中是用了引用传参,就是把a的地址拷贝给这个方法中的a,现在有两个a,两个都指向a数组的下标为0的位置,所以通过它改变a[0],能够改变a[0]的值。

这两个同样都是拷贝传递的参数的值,但是值拷贝之后它等于在栈内存里新定义了一个int类型的a且赋值相同,这两个a访问的时候访问的是栈内存中的两个不同位置。但是引用传递,是在栈内存里也定义一个a,这个a是一个地址值,和原来的a指向同一块地址,通过两个a都能访问到对内存中的 a[0]这个相同的位置。

所以这两种访问方式,就会造成在值传递方法中改变的值,在main方法中不改变,而引用传递在方法中改变了值之后,在main方法中访问时是改变的。

JAVA传参数到底是值传递还是引用

1、把一个String传进一个函数去修改。却发现在函数外并没有修改成功。String s = "abcd";t2(s);System.out.println(s);在t2中改变参数的值public s...
  • meifage
  • meifage
  • 2011年06月16日 22:55
  • 897

java值传递与引用传递

  • 2012年12月24日 11:17
  • 12KB
  • 下载

Java值传递(基本数据类型和引用数据类型)和虚拟机内存作用

Java类中方法传递基本数据类型和引用数据类型的区别,以及虚拟机内存的大体作用...

java中只有值传递

  • 2014年07月21日 16:34
  • 2KB
  • 下载

Java 值传递Visio资源

  • 2016年05月13日 18:07
  • 350KB
  • 下载

JAVA引用和对象的关系_还有值传递

初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中,把对象和对象的引用混为一谈。可是,如果我分不清对象与对象引用,        那实在没法很好地理解下面的面...

Java按值传递还是按引用?函数可修改传入变量吗?

1“Java中参数传递都是按值传递”按值传递是产地的值的拷贝,按引用传递传递的是引用的地址值,所以统称为按值传递。 2 基本类型,String = “hello” 是按值传递的,其余都按引用传递。函...
  • JYH1314
  • JYH1314
  • 2016年06月03日 09:17
  • 1419
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA之 值传递和引用传递
举报原因:
原因补充:

(最多只允许输入30个字)