一直来觉得对值传递和地址传递了解的很清楚,刚才在开源中国上看到一篇帖子介绍了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. 【分享】Java的几个重要词语
  2. 入门:PHP:hello world!
  3. 关于一些运算((与运算)、|(或运算)、^(异或运算)........)的本质理解【转】...
  4. 利用Axis2默认口令安全漏洞入侵WebService网站
  5. html细边框表格代码,html中表格细边框的四种实现及其比较.doc
  6. c语言 ipc 参数 序列化,浅谈IPC通信之序列化与反序列化(三)
  7. Java将列表转换为数组,反之亦然
  8. react销毁方法钩子0_React钩子:使用React状态的新方法
  9. mysql事务的acid、三种并发问题与四种隔离级别
  10. Jmeter正则表达式提取多个值示例
  11. 几种工具反编译被编译好的DLL文件
  12. Keil4打开单片机工程一片空白,cpu100%程序卡死的问题解决
  13. 感性电路电流计算_电工初学者会正确计算负载功率吗?一篇文章彻底教会你
  14. oracle em 证书错误,导航阻止
  15. EBS 个性化:个性化设置界面
  16. MT【109】线面角最大时为二面角平面角
  17. 写在2014年的感恩节
  18. 【DKN】(七)dataset.py【未完】
  19. AI初学者必看的4个顶级人工智能领域岗位
  20. 关于this、getContext()、getActivity()、getApplication()、getApplicationContext()的区别

热门文章

  1. 无货源亚马逊跨境电商erp系统开发_独立源码_采集铺货
  2. Github + Hexo 搭建个人博客超详细教程
  3. 明星软件工程师的10种特质
  4. iteritems()
  5. 互联网网站类型主要有哪些
  6. 织梦自定义表单如何添加提交时间?织梦留言板后台又该怎样显示用户留言时间?
  7. 浅谈两阶段提交和三阶段提交
  8. MySQL中的事务与锁
  9. ad敷铜后还有部分飞线_LOL新赛季“冥火”再次出现:AD退游,职业选手找不到血瓶...
  10. GJB 软件开发计划(模板)