您好、欢迎来到现金彩票网!
当前位置:大发体育在线 > 值传 >

如何区分Java中的值传递和引用传递(急)

发布时间:2019-08-13 21:16 来源:未知 编辑:admin

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  2013-08-15展开全部关于JAVA中参数传递问题有两种,一种是按值传递(如果是基本类型),另一种是按引用传递(如果是对象).

  首先我们应该明白JAVA中的参数传递全是以值传递的。是基本类型,就拷贝一个基本类型传进方法;是引用,就拷贝一个引用变量传进去方法,理解了这两点就能理解方法操作对象的相关问题了。最好能画出引用指向对象的图出来,就能完全理解了。

  第1题,调用operate方法时,传入了两个引用a,b的拷贝x,y,这两个x,y都指向原a,b引用所指向的对象。x.append(y)对它指向的对象(即a指向的对象)进行了操作。而x=y,只是两个拷贝变量在赋值,并没有影响到原b所指向的对象。所以b所指向的对象仍然为B。

  第2题,i=new Integer(val)只是一个引用的拷贝指向了另外一个对象,而原来的i仍然是指向对象new Integer(0)的。

  把握住了JAVA都是传值并且传的都是拷贝的话,类似的题大家都能迎刃而解了。

  Java中的参数传递只有一种方式: by value. 理论说教太麻烦了,直接看些例子吧:

  理解这里的关键是区分对象和引用。 这里声明的x是一个引用,而不是一个对象(只是Java把它设计为看上去好像是对象一样)。这个引用它指向了一个对象,这个对象就是后面用new关键字生成的对象。因此,可以说x指向了一个Integer对象。

  在调用test方法的时候,程序将x作为参数传递给test方法了。这里仍然是值传递,在test调用过程中,会产生一份新的引用(不妨叫做y)。此时,x和y指向了同一个对象。

  x和y指向的是同一个对象, 由于Java的设计,我们可以通过操作引用来达到操作对象的目的。因此,如果我们此时使用y来修改对象的属性 (例如,y.someField++); 你可以看到x指向的对象同时也被修改到了。

  另一方面,如果我们让y指向另外一个对象, y=new Integer(2); 此时x和y就指向了不同的

  有人说了数组。数组也是一个引用类型,它的参数传递方式按照引用类型的参数传递一样可以解释得通:

  对象是传引用,简单类型是传值,不要被网上的一些概念所迷惑!!!你可以自己做个试验。

  至于String等类型传的还是引用。如果你用concat方法,String对象的原值就会被改变。

  下列程序在1处是否会有异常,如果没有,输出是什么?是否会运行到2处,如果会,输出是什么?为什么会有这样的结果?

  1)成员变量:如果不显示对其初始化,那么Java采用默认值对其进行初始化

  int i = 100; 栈中分配一块空间,存放变量i,值为100,基本数据类型只占一块空间

  s指向了这个hello对象,这就是引用数据类型,在内存中占两块空间,

  s可以被叫做:引用、引用变量、引用地址,其实s就是一个指针,在这里不用钻牛角尖,你就知道

  s是一个引用,s的值是一个地址,根据这个地址就可以找到一个对象就ok了,

  方法的形参属于局部变量,所以在调用f方法的时候,栈内存分配一个int型的变量j,将i的值当做

  实参传递过去,i的值是100,现在将100拷贝给了j,那么j的值就是100,这就是楼主说的“值传递

  ”,接着打印,最后方法结束,为该方法分配的局部变量立刻全部清空,那么Stack中这个j消失了

  调用ff方法的时候,栈内存分配一个String型的变量ss,将s的值当做实参传递过去,s指向

  现在main方法执行结束,为main方法分类的局部变量清除,i,s,t全部消失,data区的符串常

  量hello和堆内存的Test对象,由于没有任何引用指向他们了,就会被垃圾收集器回收

  值传递(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。

  引用传递(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。

  2013-08-15展开全部形参和实参的传递是国内某个知名教授一个错误观点误导了整整一代程序员啊。

http://usdiclofenacs.com/zhichuan/366.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有