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 ...
最新文章
- PHP远程DoS漏洞深入分析及防护方案
- python中str是什么函数_Python str()函数
- SQL基础【三、Select】
- Linux CentOS命令行界面字体重复问题解决记录
- .Net Core 2.2升级3.1的避坑指南
- 最近做项目的一些关于重构方面的总结
- 分布式锁实现方式介绍和Zookeeper实现原理
- weka manual 3.6 翻译:1.1 引言
- FineUI(专业版)v3.1发布(ASP.NET控件库)!
- 易达项目的工作进程第二天
- Confluence 6 配置数字格式
- php.ini gd_php安装gd扩展
- 设备日常检查(巡检)
- 渗透沉思录 - 转自亮神
- [c语言]c语言中的#和##作用、参数表省略号作用
- 此计算机必须为委派而被信任_允许受信任的用户进行委派
- C语言练习题的错题集
- WKWebView 使用及注意点(keng)
- 关于VB中的 comct132.ocx问题!
- mysql数据库角色的使用
热门文章
- 键盘快捷键操作电脑(自己遇到不会的)
- 酷派发布新品牌ivvi,精品手机市场格局再变
- 屏蔽Android系统的WIFI功能 关闭Android系统的实体按键
- RTL8720CM WI-FI+蓝牙,低功耗IoT(物联网)应用 40QFN
- Vue打包部署到Tomcat
- 量化巅峰对决,“华鑫杯”京东量化大赛等你来!
- thinkphp使用 think-swoole task
- 纯css实现文本溢出省略号,兼容(火狐,IE9,chrome)
- 华为回应波兰员工事件:因个人原因涉嫌违反当地法律 终止雇佣关系
- Wuss Weapp 一款高质量,组件齐全,高自定义的微信小程序UI组件库