博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java值传递
阅读量:6431 次
发布时间:2019-06-23

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

对于Java的值传递, 你真的了解么? Java里面只有值传递, 这个值是什么? 如果是基本数据类型。 你也许回答的很干脆。 但如果是Object对象呢? 你确定清楚不? 先看下code。

Java代码

package com.basic;         public class Test {             /**         * @param args         */        public static void main(String[] args) {                 StringBuffer buffer= new StringBuffer("colin");             SChange(buffer);             System.out.println( buffer);         }                  public static void SChange (StringBuffer str) {             str= new StringBuffer("huang");         }         }

上面code, 输出的结果是什么? 你对了吗?

输出的结果是 colin.

我们修改下code

Java代码 

package com.basic;         public class Test {             /**         * @param args         */        public static void main(String[] args) {                 StringBuffer buffer= new StringBuffer("colin");             SChange(buffer);             System.out.println( buffer);         }                  public static void SChange (StringBuffer str) {             //str= new StringBuffer("huang");             str.append(" huang");         }         }

输出的结果是 colin huang.

为什么是这样的结果呢? 下面详细解释:

Java确实通过引用来维护Object, 所有的Object变量, 都是一个引用。但Java在方法传递中, 确实是值传递。 那这个值是什么呢。 对于Object, 这个值就是传人的Object的引用。既把这个引用copy了一份。 那么, 就至少有两个引用指向了这同一个传入的Object。 参考下图:

那么, 我们就来图解下上面的那两个代码。

下图图解代码一

接着图解代码二

 

代码一中, copy的那个引用, 指向了一个新的对象。 但原对象还是没有变化的。

代码二中, copy的那个引用, 把原对象改变了。

这就是Java的值传递。

转载于:https://www.cnblogs.com/lxcmyf/p/7045040.html

你可能感兴趣的文章
数据库中触发器before与after认识
查看>>
手动露天广场和立方体
查看>>
随机选择
查看>>
【Java并发编程三】闭锁
查看>>
分布式事务中遇到的 “与基础事务管理器的通信失败”的解决方法
查看>>
让你的Git水平更上一层楼的10个小贴士
查看>>
c++ string 之 find_first_not_of 源码
查看>>
mybatis中的#和$的区别
查看>>
ubuntu下搭建NDK环境
查看>>
MessageDigest简单介绍
查看>>
webpack window 使用sass来编译css样式
查看>>
D3 & Data Visualization in Ext JS
查看>>
java通过UUID生成16位唯一订单号
查看>>
001-web基本程序搭建
查看>>
函数指针和指针函数
查看>>
借力AI 极验如何构建下一代业务安全?
查看>>
用Python制作迷宫GIF
查看>>
支付宝推出基于区块链跨境支付,巨头入场小企业将面临灭顶之灾
查看>>
从事互联网行业,怎样才能快速掌握一门编程语言呢?
查看>>
深入浅出换肤相关技术以及如何实现
查看>>