Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!

Java基础面试题 PDF 下载


分享到:
时间:2020-05-05 09:35来源:http://www.java1234.com 作者:小锋  侵权举报
Java基础面试题 PDF 下载
失效链接处理
Java基础面试题 PDF 下载

本站整理下载:
 
相关截图:
 
主要内容:

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
 

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐