详解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的值传递、地址传递、引用传递相关推荐

  1. java内部格式_详解java内部类的访问格式和规则

    详解java内部类的访问格式和规则 1.内部类的定义 定义一个类来描述事物,但是这个事物其中可能还有事物,这时候在类中再定义类来描述. 2.内部类访问规则 ①内部类可以直接访问外部类中的成员,包括私有 ...

  2. java sleep唤醒_详解Java中的线程让步yield()与线程休眠sleep()方法

    Java中的线程让步会让线程让出优先级,而休眠则会让线程进入阻塞状态等待被唤醒,这里我们对比线程等待的wait()方法,来详解Java中的线程让步yield()与线程休眠sleep()方法 线程让步: ...

  3. java static 函数_详解java中的static关键字

    Java中的static关键字可以用于修饰变量.方法.代码块和类,还可以与import关键字联合使用,使用的方式不同赋予了static关键字不同的作用,且在开发中使用广泛,这里做一下深入了解. 静态资 ...

  4. java comparator相等_详解Java中Comparable和Comparator接口的区别

    详解Java中Comparable和Comparator接口的区别 发布于 2020-7-20| 复制链接 摘记: 详解Java中Comparable和Comparator接口的区别本文要来详细分析一 ...

  5. python java混合编程_详解java调用python的几种用法(看这篇就够了)

    java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...

  6. Java implement意思_详解JAVA中implement和extends的区别

    详解JAVA中implement和extends的区别 发布于 2020-4-14| 复制链接 摘记: 详解JAVA中implement和extends的区别extends是继承父类,只要那个类不是声 ...

  7. java runnable 异常_详解Java中多线程异常捕获Runnable的实现

    详解Java中多线程异常捕获Runnable的实现 1.背景: Java 多线程异常不向主线程抛,自己处理,外部捕获不了异常.所以要实现主线程对子线程异常的捕获. 2.工具: 实现Runnable接口 ...

  8. java 代码块_详解java中的四种代码块

    在java中用{}括起来的称为代码块,代码块可分为以下四种: 一.简介 1.普通代码块: 类中方法的方法体 2.构造代码块: 构造块会在创建对象时被调用,每次创建时都会被调用,优先于类构造函数执行. ...

  9. java排序接口_详解JAVA使用Comparator接口实现自定义排序

    1.原则 Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法: int compare(Object o1, Object o2) 返回一个基本类型的 ...

最新文章

  1. jQuery学习笔记(Ajax)
  2. React+dva+webpack+antd-mobile 实战分享(二)
  3. vue源码解析pdf_Vue源码全面解析八 callHook函数(触发生命周期函数)
  4. 算法:ACM二分图匹配 HDU2063
  5. 布道微服务_06微服务调用的监控
  6. Android 应用开发---ViewPager---5.使用Fragment实现ViewPager滑动
  7. 面向切面编程:操作日志
  8. 文件权限管理命令chmod,chown与文本搜索命令grep
  9. 二叉搜索树的操作题集
  10. 零基础计算机编程入门自学需要什么条件
  11. C#中获得汉字的首拼音(加强版)
  12. 绿色建筑推动海口智慧城市发展
  13. c语言青蛙跳答案是多少啊,青蛙跳台阶问题(示例代码)
  14. UE 4.13 3D Widget使用
  15. html和java开发哪个难,html5和java哪个难
  16. AWS KVS(Kinesis Video Streams)之WebRTC的C库
  17. 一种射频卡读写原理及实现
  18. 图像处理学习笔记-05-图像复原与重建1
  19. 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler...
  20. oo 浏览文件服务器,文件服务器的配置.docx

热门文章

  1. 六种方式,教你在SpringBoot初始化时搞点事情!
  2. 拿下计网协议后,我就是公园里最靓的仔
  3. 老大吩咐的可重入分布式锁,终于完美的实现了~
  4. 深入理解 Java 虚拟机(第一弹) - Java 内存区域透彻分析
  5. PingCode Wiki ——国内最顶级的产研团队知识库产品介绍
  6. 有哪些好用的协同办公软件?
  7. 推荐7个看似简约,实则惊艳的实用软件,建议收藏!
  8. 那些我们常用的scrum工具、敏捷开发工具
  9. leangoo里怎么邀请成员加入看板?
  10. OKR让伟大的企业愿景成为可能