java传递地址_java 值传递及地址传递(引用传递)
一直来觉得对值传递和地址传递了解的很清楚,刚才在开源中国上看到一篇帖子介绍了java中的值传递和地址传递,看完后感受颇深。下边总结下以便更容易理解。
按照以前的理解,java中基本数据类型是值传递,对象是地址(引用)传递。给大家看个例子:
public class ObjectTrans {
public static void main(String[] args) {
String name = "123";
SChange(name);
System.out.println(name);
}
public static void SChange (String str) {
str = "234";
}
}
大家思考下,这个例子输出的结果应该是123呢还是234呢?结果是123。why?一句话表达:对象也是值传递,只是把这个对象的引用copy了一份。
其实java本来就是值传递,没有c++那样的指针传递,分步分析下上边的代码:
1、name = "123"
2、调用SChange str 和 name 共同指向 “123”(拷贝name的引用赋给str)
3、str 重新赋值并指向“234”
4、name指向不变还是“123”
下边看另外一段代码:
public class ObjectTrans {
public static void main(String[] args) {
StringBuilder name = new StringBuilder("123");
SChange(name);
System.out.println(name);
}
public static void SChange (StringBuilder str) {
//str = "234";
str.append("234");
}
}
那么这段代码输出的结果应该是什么呢?答案是123234,why?同样分步分析:
1、name = "123"
2、调用SChange str 和 name 共同指向 “123”(拷贝name的引用赋给str)
3、改变所指向对象的值"123"+"234"
4、引用没变只是值变了,所以结果为123234
如果不明白请留言,自己好好分析下。。。请记住一句话:java只有值传递。
java传递地址_java 值传递及地址传递(引用传递)相关推荐
- java引用传递关键字_Java值传递和引用传递
Java值传递和引用传递 1 什么是Java值传递和引用传递 在Java中只有值传递,而没有引用调用.如果我们调用传递值的方法,则称为按值调用.在调用方法中完成的更改在调用方法时不受影响. 2 Jav ...
- java 数据类型分为_JAVA中分为基本数据类型及引用数据类型
byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值 ...
- java客户端mac地址_Java 获取客户端mac地址
package com.alpha.test; import java.io.BufferedReader; import java.io.IOException; import java.io.In ...
- java 调用远程服务_java调用(请求)远程服务地址
/** * 前端Ajax获取管理相对人经纬度信息 * @author jiyanle * @date 2014-10-31 */ public String getPosition() { HttpS ...
- java 不同类之间传递数据_java 数据在不同类之间的传递
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 mgr.setData(mgr.nameDvd, mgr.state, mgr.customer, mgr.custDvd, mgr.time); /*创 ...
- java while打印_java – 值不会在while循环中更新,除非打印出来
参见英文答案 > Loop doesn't see changed value without a print statement ...
- java list类型参数_java – List是一个原始类型.引用通用类型List应该参数化
List is a raw type. References to generic type List should be parameterized 不是错误,而是一个警告. 理解泛型是一个基石,如 ...
- 类写了package java命令出错_java/javac命令行如何同时引用多个包;错误 TypeError: 'JavaPackage' object is not callable 的含义...
出现这类错误提示:'JavaPackage' object is not callable,可以看下所引用的jar包或者class文件是否在java的路径搜索范围内 命令行模式下:javac可以编译* ...
- python引用传递产生的问题_python关于lambda、引用传递等易犯的错误
[Python] 纯文本查看 复制代码import time import threading def test(i,count, _type): time.sleep(3) if lock.acqu ...
最新文章
- 【分享】Java的几个重要词语
- 入门:PHP:hello world!
- 关于一些运算((与运算)、|(或运算)、^(异或运算)........)的本质理解【转】...
- 利用Axis2默认口令安全漏洞入侵WebService网站
- html细边框表格代码,html中表格细边框的四种实现及其比较.doc
- c语言 ipc 参数 序列化,浅谈IPC通信之序列化与反序列化(三)
- Java将列表转换为数组,反之亦然
- react销毁方法钩子0_React钩子:使用React状态的新方法
- mysql事务的acid、三种并发问题与四种隔离级别
- Jmeter正则表达式提取多个值示例
- 几种工具反编译被编译好的DLL文件
- Keil4打开单片机工程一片空白,cpu100%程序卡死的问题解决
- 感性电路电流计算_电工初学者会正确计算负载功率吗?一篇文章彻底教会你
- oracle em 证书错误,导航阻止
- EBS 个性化:个性化设置界面
- MT【109】线面角最大时为二面角平面角
- 写在2014年的感恩节
- 【DKN】(七)dataset.py【未完】
- AI初学者必看的4个顶级人工智能领域岗位
- 关于this、getContext()、getActivity()、getApplication()、getApplicationContext()的区别