一直来觉得对值传递和地址传递了解的很清楚,刚才在开源中国上看到一篇帖子介绍了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 值传递及地址传递(引用传递)相关推荐

  1. java引用传递关键字_Java值传递和引用传递

    Java值传递和引用传递 1 什么是Java值传递和引用传递 在Java中只有值传递,而没有引用调用.如果我们调用传递值的方法,则称为按值调用.在调用方法中完成的更改在调用方法时不受影响. 2 Jav ...

  2. java 数据类型分为_JAVA中分为基本数据类型及引用数据类型

    byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值 ...

  3. java客户端mac地址_Java 获取客户端mac地址

    package com.alpha.test; import java.io.BufferedReader; import java.io.IOException; import java.io.In ...

  4. java 调用远程服务_java调用(请求)远程服务地址

    /** * 前端Ajax获取管理相对人经纬度信息 * @author jiyanle * @date 2014-10-31 */ public String getPosition() { HttpS ...

  5. java 不同类之间传递数据_java 数据在不同类之间的传递

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 mgr.setData(mgr.nameDvd, mgr.state, mgr.customer, mgr.custDvd, mgr.time); /*创 ...

  6. java while打印_java – 值不会在while循环中更新,除非打印出来

    参见英文答案 > Loop doesn't see changed value without a print statement                                 ...

  7. java list类型参数_java – List是一个原始类型.引用通用类型List应该参数化

    List is a raw type. References to generic type List should be parameterized 不是错误,而是一个警告. 理解泛型是一个基石,如 ...

  8. 类写了package java命令出错_java/javac命令行如何同时引用多个包;错误 TypeError: 'JavaPackage' object is not callable 的含义...

    出现这类错误提示:'JavaPackage' object is not callable,可以看下所引用的jar包或者class文件是否在java的路径搜索范围内 命令行模式下:javac可以编译* ...

  9. python引用传递产生的问题_python关于lambda、引用传递等易犯的错误

    [Python] 纯文本查看 复制代码import time import threading def test(i,count, _type): time.sleep(3) if lock.acqu ...

最新文章

  1. PHP远程DoS漏洞深入分析及防护方案
  2. python中str是什么函数_Python str()函数
  3. SQL基础【三、Select】
  4. Linux CentOS命令行界面字体重复问题解决记录
  5. .Net Core 2.2升级3.1的避坑指南
  6. 最近做项目的一些关于重构方面的总结
  7. 分布式锁实现方式介绍和Zookeeper实现原理
  8. weka manual 3.6 翻译:1.1 引言
  9. FineUI(专业版)v3.1发布(ASP.NET控件库)!
  10. 易达项目的工作进程第二天
  11. Confluence 6 配置数字格式
  12. php.ini gd_php安装gd扩展
  13. 设备日常检查(巡检)
  14. 渗透沉思录 - 转自亮神
  15. [c语言]c语言中的#和##作用、参数表省略号作用
  16. 此计算机必须为委派而被信任_允许受信任的用户进行委派
  17. C语言练习题的错题集
  18. WKWebView 使用及注意点(keng)
  19. 关于VB中的 comct132.ocx问题!
  20. mysql数据库角色的使用

热门文章

  1. 键盘快捷键操作电脑(自己遇到不会的)
  2. 酷派发布新品牌ivvi,精品手机市场格局再变
  3. 屏蔽Android系统的WIFI功能 关闭Android系统的实体按键
  4. RTL8720CM WI-FI+蓝牙,低功耗IoT(物联网)应用 40QFN
  5. Vue打包部署到Tomcat
  6. 量化巅峰对决,“华鑫杯”京东量化大赛等你来!
  7. thinkphp使用 think-swoole task
  8. 纯css实现文本溢出省略号,兼容(火狐,IE9,chrome)
  9. 华为回应波兰员工事件:因个人原因涉嫌违反当地法律 终止雇佣关系
  10. Wuss Weapp 一款高质量,组件齐全,高自定义的微信小程序UI组件库