博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
按值传递还是按引用传递详细解说
阅读量:6715 次
发布时间:2019-06-25

本文共 1475 字,大约阅读时间需要 4 分钟。

hot3.png

1、概述 

前天在做系统的时候被Java中参数传递问题卡了一下,回头查阅了相关的资料,对参数传递问题有了新的了解和掌握,但是有个问题感觉还是很模糊,就是Java中到底是否只存在值传递,因为在查阅资料时,经常看到有人说Java只有值传递,但有人说既有值传递,也有引用传递,对于两个观点个人觉得应该是站的角度不同而得出两个不同的说法,其实两个说法其中的原理是一样的,只要咱们懂得其中的原理,那么至于叫什么也就无所谓了,下面是我在网上看到的一个帖子,解释的感觉挺全面,就转过来,以供以后学习参考:

 

2、值传递

指的是在方法调用时,传递的参数是按值的拷贝传递。示例如下:

/** * Copyright © 2015-2016 All rights reserved. */package com.yujin.passByValue;/** * @description 值传递 * @author 
yujin * @date 2016年4月12日 上午8:28:55 * @version 1.0   */public class Demo1 {  public void changeValue(int a){    a = a+1;    System.out.println("changeValue method:"+a);  }  public static void main(String[] args) {    Demo1 demo1 = new Demo1();    int a = 10;    demo1.changeValue(a);    System.out.println("Main method "+a);  }}

代码分析:

084810_xJLP_1754093.png

3、引用传递

/** * Copyright © 2015-2016 All rights reserved. */package com.yujin.passByValue;/** * @description 引用传递 * @author 
yujin * @date 2016年4月12日 上午8:52:02 * @version 1.0   */public class Demo2 {    public void changeObjetValue(Student stu){    //stu = new Student();    stu.age = 31;    stu.name = "宋江";    System.err.println("changeObjetValue method:"+stu.age+"--"+stu.name);  }    public static void main(String[] args) {    Demo2 demo2 = new Demo2();    Student s = new Student();    s.age = 21;    s.name = "华荣";    demo2.changeObjetValue(s);        System.err.println("main  method:"+s.age+"--"+s.name);  }  }class Student{  public int age;  public String name;}

 

转载于:https://my.oschina.net/u/1754093/blog/657117

你可能感兴趣的文章
[Bower] Bower
查看>>
Android 网络通信框架Volley简介(Google IO 2013)
查看>>
杂记- 3W互联网的圈子,大数据敏捷BI与微软BI的前端痛点
查看>>
Android -- setWillNotDraw()
查看>>
魔幻的曲率--已知曲率画图形
查看>>
.Net额外小工具
查看>>
【转】Eclipse的启动问题【an error has occurred see the log file】
查看>>
一款纯css3实现的条纹加载条
查看>>
ADF_Advanced ADF系列1_Fusion应用的客制和个性化(Part1)
查看>>
multipart/form-data和application/x-www-form-urlencoded的区别
查看>>
[LeetCode] Reorder List 链表重排序
查看>>
[总结]文件传输模型之文件中转
查看>>
jQuery(一)引入
查看>>
Facebook内部分享:26个高效工作的小技巧
查看>>
jstack和线程dump分析
查看>>
NETSH WINSOCK RESET这条命令的含义和作用?
查看>>
SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int
查看>>
第一次使用Android Studio时你应该知道的一切配置(二):新建一个属于自己的工程并安装Genymotion模拟器...
查看>>
AtomicInteger简介
查看>>
(转)解决ScrollView嵌套ListView或者GridView导致只显示一行的方法
查看>>