java 引用传递_详解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.内部类的定义 定义一个类来描述事物,但是这个事物其中可能还有事物,这时候在类中再定义类来描述. 2.内部类访问规则 ①内部类可以直接访问外部类中的成员,包括私有 ...
- java sleep唤醒_详解Java中的线程让步yield()与线程休眠sleep()方法
Java中的线程让步会让线程让出优先级,而休眠则会让线程进入阻塞状态等待被唤醒,这里我们对比线程等待的wait()方法,来详解Java中的线程让步yield()与线程休眠sleep()方法 线程让步: ...
- java static 函数_详解java中的static关键字
Java中的static关键字可以用于修饰变量.方法.代码块和类,还可以与import关键字联合使用,使用的方式不同赋予了static关键字不同的作用,且在开发中使用广泛,这里做一下深入了解. 静态资 ...
- java comparator相等_详解Java中Comparable和Comparator接口的区别
详解Java中Comparable和Comparator接口的区别 发布于 2020-7-20| 复制链接 摘记: 详解Java中Comparable和Comparator接口的区别本文要来详细分析一 ...
- python java混合编程_详解java调用python的几种用法(看这篇就够了)
java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...
- Java implement意思_详解JAVA中implement和extends的区别
详解JAVA中implement和extends的区别 发布于 2020-4-14| 复制链接 摘记: 详解JAVA中implement和extends的区别extends是继承父类,只要那个类不是声 ...
- java runnable 异常_详解Java中多线程异常捕获Runnable的实现
详解Java中多线程异常捕获Runnable的实现 1.背景: Java 多线程异常不向主线程抛,自己处理,外部捕获不了异常.所以要实现主线程对子线程异常的捕获. 2.工具: 实现Runnable接口 ...
- java 代码块_详解java中的四种代码块
在java中用{}括起来的称为代码块,代码块可分为以下四种: 一.简介 1.普通代码块: 类中方法的方法体 2.构造代码块: 构造块会在创建对象时被调用,每次创建时都会被调用,优先于类构造函数执行. ...
- java排序接口_详解JAVA使用Comparator接口实现自定义排序
1.原则 Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法: int compare(Object o1, Object o2) 返回一个基本类型的 ...
最新文章
- jQuery学习笔记(Ajax)
- React+dva+webpack+antd-mobile 实战分享(二)
- vue源码解析pdf_Vue源码全面解析八 callHook函数(触发生命周期函数)
- 算法:ACM二分图匹配 HDU2063
- 布道微服务_06微服务调用的监控
- Android 应用开发---ViewPager---5.使用Fragment实现ViewPager滑动
- 面向切面编程:操作日志
- 文件权限管理命令chmod,chown与文本搜索命令grep
- 二叉搜索树的操作题集
- 零基础计算机编程入门自学需要什么条件
- C#中获得汉字的首拼音(加强版)
- 绿色建筑推动海口智慧城市发展
- c语言青蛙跳答案是多少啊,青蛙跳台阶问题(示例代码)
- UE 4.13 3D Widget使用
- html和java开发哪个难,html5和java哪个难
- AWS KVS(Kinesis Video Streams)之WebRTC的C库
- 一种射频卡读写原理及实现
- 图像处理学习笔记-05-图像复原与重建1
- 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler...
- oo 浏览文件服务器,文件服务器的配置.docx