当前位置:
首页 >
Java方法 传值方式
发布时间:2024/9/21
52
豆豆
生活随笔
收集整理的这篇文章主要介绍了
Java方法 传值方式
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
这个问题是面试的时候经常会问到的一道题吧?这次做项目的过程中,其中一个同学因为无用了,导致了一个bug,不过是在提测前啦!本来我想借着这次机会分享一下java方法传参的机制,但是经过几天的学习,了解,发现网上的博客基本上没有一篇能让人看后就清清楚楚的明白的,讲的都很囫囵吞枣。觉得要要真正把这个问题说明白还真的不是一件容易的事?要了解jvm的堆栈和堆,以及java中的引用和赋值的含义。我现在也不能清楚的讲明白,但现在应该不会误用了,就是方法调用,知道怎样做可以改变传递参数的值,怎样做是不会改变传递参数的值。下面来个小测试程序,你知道这个程序会答应出什么吗?
public class Test {public static void main(String[] args) {StringBuffer a = new StringBuffer("A");StringBuffer b = new StringBuffer("B");int i = 5;operate(a, b, i);System.out.println(a + "," + b + "," + i);}public static void operate(StringBuffer x, StringBuffer y, int j) {x.append(y);y = x;y.append("C");j = 1;} }规律总结: Java参数,不管是原始类型还是引用类型,传递的都是副本 如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的值不会改变原始的值. 如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是通过地址改变改变了地址指向的值,那么在函数内的改变会影响到传入的参数。 如果在函数中改变了副本的地址,如当执行如a=其他对象,a=new等赋值操作时,实际上是将a指向新的位置,那么函数外的原值不改变。
转载于:https://www.cnblogs.com/wangfeixiong/p/7158442.html
总结
以上是生活随笔为你收集整理的Java方法 传值方式的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: yii2之原生sql
- 下一篇: 201671010117 2016-20