前言:
当前同学们对“java对象传递方法可以修改对象吗”大概比较重视,你们都想要剖析一些“java对象传递方法可以修改对象吗”的相关内容。那么小编在网摘上网罗了一些关于“java对象传递方法可以修改对象吗””的相关内容,希望兄弟们能喜欢,咱们快快来了解一下吧!参数传值中,java中一般认为值传递是不影响原值,而地址引用传值将改变原对象,
但有的时候对象传值为啥有时无法改变呢?废话不说,直接上代码
/** * 对象传值为啥有时无法改变呢 * @author Administrator * */public class ObjectAndClass { public static void main(String[] args) { Circle circle1 = new Circle(1); Circle circle2 = new Circle(2); System.out.println("原对象的值 circle1 = " + circle1.radius + " circle2 = " + circle2.radius); swap1(circle1, circle2); System.out.println("调用 swap1 后: circle1 = " + circle1.radius + " circle2 = " + circle2.radius); swap2(circle1, circle2); System.out.println("调用 swap2 后: circle1 = " + circle1.radius + " circle2 = " + circle2.radius); swap3(circle1, circle2); System.out.println("调用 swap3 后:circle1 = " + circle1.radius + " circle2 = " + circle2.radius); } /** * 此方法只是修改了形式入参的指针的指向,对原来调用者的变量的指针并没有影响。 * 对象传递,只有修改对象内容才对原来调用者的对象变量有影响。 * * @param x * @param y */ public static void swap1(Circle x, Circle y) { Circle temp = x; x = y; y = temp; //System.out.println("swap1===" + x.radius + "=====" + y.radius);//此处会变,但改变的是形参 } /** * 此方法也只是修改了形式入参的指针的指向,对原来调用者的变量的指针并没有影响。 * 对象传递,只有修改对象内容才对原来调用者的对象变量有影响。 * 对象引用传值,只有通过return,并且赋值之前的对象才可以改变 * @param x * @param y */ public static void swap2(Circle x, Circle y) { x = new Circle(11); y = new Circle(22); //此处依然无法改变之前的circle1,circle2的值 } /** * 此方法改变对象的内容,引用对应的内容将改变 * * @param x * @param y */ public static void swap3(Circle x, Circle y) { double temp = x.radius; x.radius = y.radius; y.radius = temp; }}class Circle { double radius; Circle(double newRadius) { radius = newRadius; }}
运行结果如下:
总结:
1.引用传参时,改变参数的引用对原来调用者的变量的指针并没有影响,只有通过return,并且赋值原对象才可以改变原对象
2.引用传参时,改变参数的内容,引用对应的内容将改变,原对象的值也会改变
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java对象传递方法可以修改对象吗 #java传入参数没法改变 #java改变传入参数的值 #java 修改入参