牛客面试题集锦之java中的"引用传递"

    xiaoxiao2021-03-25  93

    java没有指针,因此也就没有引用传递这一说法,只有值传递,不过可以通过对象来实现引用传递,这种引用传递和指针原生的引用传递不一样:

    java值传递:方法调用时,实际参数将它的值传递个形式参数,期间在方法中形式参数的改变并不会改变实际参数的值 java引用传递:也叫做地址传递。传递参数时,形式参数将和实际参数指向同一个地址,相当于实际参数的一个副本,具体实际参数会不会改变需要看操作的方式

    java中的引用传递面试题:

    Qusetion1:java中有引用传递吗? Answer1:java中所有的都是值传递,没有引用传递,有些我们看起来类似于C的指针引用传递的只是传递的是地址,仍然是值传递 Question1:如下代码: public class test{ public static void main(String[] args){ test t = new test(); Integer i1 = new Integer(1); Integer i2 = i1; t.fun(t2); System.out.println(i1.equals(i2)); } public void fun(Integer i){ i = new Integer(2); } } 最终输出的结果为true or false? Answer2:最终的结果是输出true,其赋值过程如下: 开始创建一个Integer对象:i1----->地区1(new Integer(1)) 然后创建一个Integer对象并且指向i1:i2----->i1----->地区1(new Integer(1)) 接下来将i2对象传递给方法中的形参i:i----->i2----->i1----->地区1(new Integer(1)) 在该方法中重新为i形参赋值:i------>地区2(new Integer(2)) 最后的结果如下: i1----->i2----->地区1(new Integer(1)) i------>地区2(new Integer(2)) 最终i1还是和i2指向同一个位置,当把i2实参传递给形参时只是使得形参和实参同时指向一个地址而已,之后在方法中的操作只是改变了形参自己的地址而已,并没有改变原来地址指向的值
    转载请注明原文地址: https://ju.6miu.com/read-38250.html

    最新回复(0)