Java:按值传递还是按引用传递详细解说
来源:互联网 发布:sendto目标端口号 编辑:程序博客网 时间:2024/06/06 09:42
值传递:
指的是在方法调用时,传递的参数是按值的拷贝传递。
方法调用时,实际参数把它的值传递给对应的形式参数,函数接收的是原始值的一个copy,此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值。
按值传递重要特点:传递的是值的拷贝,也就是说传递后就互不相关了。
public class TempTest {
private void test1(int a){
a = 5;
System.out.println(“test1方法中的a=”+a);
}
public static void main(String[] args) {
TempTest t = new TempTest();
int a = 3;
t.test1(a);//传递后,test1方法对变量值的改变不影响这里的a
System.out.println(”main方法中的a=”+a);
}
}
输出结果:
test1方法中的a=5
main方法中的a=3
引用传递
指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址。
也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址;
传递的是值的引用,也就是说传递前和传递后都指向同一个引用(也就是同一个内存空间)
public class TempTest {
private void test1(A a){
a.age = 20;
System.out.println(“test1方法中的age=”+a.age);
}
public static void main(String[] args) {
TempTest t = new TempTest();
A a = new A();
a.age = 10;
t.test1(a);
System.out.println(”main方法中的age=”+a.age);
}
}
class A{
public int age = 0;
}
输出结果:
test1方法中的age=20
main方法中的age=20
4.结论
结合上面的分析,关于值传递和引用传递可以得出这样的结论:
(1)基本数据类型传值,对形参的修改不会影响实参;
(2)引用类型传引用,形参和实参指向同一个内存地址(同一个对象),所以对参数的修改会影响到实际的对象;
(3)String, Integer, Double等immutable的类型特殊处理,可以理解为传值,最后的操作不会修改实参对象。
- Java:按值传递还是按引用传递详细解说
- Java:按值传递还是按引用传递详细解说
- Java:按值传递还是按引用传递详细解说 .
- Java:按值传递还是按引用传递详细解说
- Java:按值传递还是按引用传递详细解说
- Java:按值传递还是按引用传递详细解说
- Java:按值传递还是按引用传递详细解说
- Java-按值传递还是按引用传递详细解说
- Java:按值传递还是按引用传递详细解说
- Java-按值传递还是按引用传递详细解说
- Java:按值传递还是按引用传递详细解说
- Java:按值传递还是按引用传递详细解说
- Java:按值传递还是按引用传递详细解说
- Java:按值传递还是按引用传递详细解说
- Java:按值传递还是按引用传递详细解说
- Java:按值传递还是按引用传递详细解说
- Java:按值传递还是按引用传递详细解说
- Java:按值传递还是按引用传递详细解说
- 线段树基础详解
- 微信医疗健康分时分级挂号预约系统——乐享其约
- 精通MongoDB-查询优化
- Okhttp解析Gson数据并且展示到recyclerView
- 让浏览器不缓存数据
- Java:按值传递还是按引用传递详细解说
- UI效果(2)
- Mac OS X 10.10 Apache+ PHP配置
- CentOS Linux更改MySQL数据库目录位置具体操作
- hdu 6181 Two Paths (次短路)
- 对于Quartz的时间配置符号中?的终极说明
- SpringMVC视图解析器与数据类型转换
- yum安装MySQL5.6
- XZ_CSS之CSS新增特性