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的按引用传递吗?

今天在博客上看到《你真的理解Java的按引用传递吗?》这篇博文,就好奇进去看了一下,结果发现,其实说了半天,并没有特别清楚的解释。尤其是对于传递String类型时的例子时,有点发蒙。        接...
  • xiaoxian8023
  • xiaoxian8023
  • 2015年11月05日 17:01
  • 4935

Java的参数传递到底是引用传递还是值传递

首先看一段代码:public static void main(String[] args) { Person a = new Person(23, "a"); Person b = ...
  • panyongcsd
  • panyongcsd
  • 2016年08月30日 17:14
  • 1863

JAVA中值传递和引用传递的三种情况

前言我们都知道,java中数据类型分为基本数据类型和引用数据类型。 基本数据类型 - 整型:byte,short,int,long - 浮点型:float,double ...
  • zhzhao999
  • zhzhao999
  • 2016年12月04日 00:14
  • 2187

java中按值传递和引用传递区别

java中传参方式
  • morgerton
  • morgerton
  • 2017年02月08日 12:54
  • 1098

Java到底是值传递?还是引用传递?

前言 最近和同事讨论算法效率问题无意中涉及到一个问题,java中调用方法的时候是值传递呢?还是引用传递?网上搜索一下相关问题,众说纷纭,有人说值传递,有人说引用传递,还有人说”基础类型是值传递,对象...
  • xiaosha009
  • xiaosha009
  • 2016年02月17日 14:23
  • 1553

java 引用传递,还是值传递 之坑

对非原生类型,即对象类型值传递的 坑,工作中遇到的实际问题,记录下来,以备回忆和参考,说的不准确的地方务请大神留言, 注,此处对传递的是String的情况暂不讨论,这个相对比较特殊,网上也有文章另...
  • liangxw1
  • liangxw1
  • 2016年03月30日 22:21
  • 390

Java中值传递和引用传递实例

Java中值传递和引用传递实例
  • u012273328
  • u012273328
  • 2016年04月15日 12:05
  • 1275

java基本数据类型传递与引用传递区别详解

java的值传递和引用传递在面试中一般都会都被涉及到,今天我们就来聊聊这个问题,首先我们必须认识到这个问题一般是相对函数而言的,也就是java中的方法参数,那么我们先来回顾一下在程序设计语言中有关参数...
  • javazejian
  • javazejian
  • 2016年04月19日 17:12
  • 13394

你真的理解Java的按引用传递吗?

首先我们来看下面这段代码:public class Test1 { String a = "123"; public static void change(Test1 test) ...
  • cauchyweierstrass
  • cauchyweierstrass
  • 2015年11月02日 10:42
  • 6938

Java只有值传递,如何做到传引用

今天,我在一本面试书上看到了关于java的一个参数传递的问题: 写道 java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? 我毫无疑问的回答:“引用传递!”,并且还觉得自己对ja...
  • king_cp
  • king_cp
  • 2015年04月20日 14:31
  • 966
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA之 值传递和引用传递
举报原因:
原因补充:

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