文档章节

按值传递还是按引用传递详细解说

毅屺
 毅屺
发布于 2016/04/12 09:32
字数 430
阅读 20
收藏 1

1、概述 

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

 

2、值传递

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

/**
 * Copyright © 2015-2016 All rights reserved.
 */
package com.yujin.passByValue;
/**
 * @description 值传递
 * @author <a href="yujin@zxxk.cn">yujin</a>
 * @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);
  }
}

代码分析:

3、引用传递

/**
 * Copyright &copy; 2015-2016 All rights reserved.
 */
package com.yujin.passByValue;
/**
 * @description 引用传递
 * @author <a href="yujin@zxxk.cn">yujin</a>
 * @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;
}

 

© 著作权归作者所有

毅屺
粉丝 7
博文 35
码字总数 23276
作品 0
海淀
程序员
私信 提问
Java:按值传递还是按引用传递详细解说

前天在做系统的时候被Java中参数传递问题卡了一下,回头查阅了相关的资料,对参数传递问题有了新的了解和掌握,但是有个问题感觉还是很模糊,就是Java中到底是否只存在值传递,因为在查阅资料...

odlingyjbe
2016/12/22
10
0
Java按引用传递?按值传递!

当一个对象被当作参数传递到一个方法后,在此方法内可以改变对象的属性,那么这里到底是“按值传递”还是“按引用传递”? 答:是按值传递。Java语言参数传递只有按值传递。当一个实例对象作...

维他ViTa
2018/10/06
26
3
Java里的按值传递与引用传递

按值传递还是按引用传递 这个在Java里面是经常被提起的问题,也有一些争论,似乎最后还有一个所谓的结论:“在Java里面参数传递都是按值传递”。事实上,这很容易让人迷惑,下面先分别看看什...

0o清风徐来o0
2012/11/27
146
2
Java参数是传值还是传引用

Java参数传值还是传引用  参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递。写它是为了揭穿普遍存在的一种神话,即认为 Java 应用程序按引用传递参...

小和尚敲代码
2016/02/27
111
0
java传递函数参数(值传递)

Java中只有按值传递,没有按引用传递。 基本类型传递的是值的副本; 引用类型传递的是引用的副本。 基本类型就不说了,主要看看对象做参数的情况。 输出:我变了 因为传递的是引用的副本,也...

liujiest
2016/07/31
74
0

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
9
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
953
11
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部