失效链接处理 |
Java基础面试题 PDF 下载
本站整理下载:
提取码:m1e8
相关截图:
主要内容:
1.引用传递和值传递
这里要用实际参数和形式参数的概念来帮助理解,
值传递:
方法调用时,实际参数把它的值传递给对应的形式参数,函数接收的是原始值的一个copy,此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值。
引用传递:
也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址;
在方法执行中,形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会影响到实际对象。
4.结论
结合上面的分析,关于值传递和引用传递可以得出这样的结论:
(1)基本数据类型传值,对形参的修改不会影响实参;
(2)引用类型传引用,形参和实参指向同一个内存地址(同一个对象),所以对参数的修改会影响到实际的对象;
(3)String, Integer, Double等immutable的类型特殊处理,可以理解为传值,最后的操作不会修改实参对象。
代码:
package com.quote.value;
public class ReferencePkValue {
public static void main(String[] args) {
ReferencePkValue t=new ReferencePkValue();
int a=99;
t.test1(a);
System.out.println(a);
MyObj obj=new MyObj();
t.test2(obj);
System.out.println(obj.b);
}
public void test1(int a) {
a=a++;
System.out.println("test1:"+a);
}
public void test2(MyObj obj){
obj.b=100;
System.out.println("test2:"+obj.b);
}
}
class MyObj{
public int b=99;
}
结果:
test1:99
99
test2:100
100
|