Java 多个引用类型变量引用同一个对象
引用类型变量在声明后必须引用对象才能使用。
一个引用变量只能唯一指向一个对象,但同一个对象可被多个引用类型变量引用。
如:MyDate today; //将变量跟配给一个保存引用的空间(栈)
today = new MyDate(); //给today变量开辟数据空间(堆),然后再执行赋值操作
//引用变量赋值
MyDate a, b; //在内存开辟两个引用空间
a = new MyDate(); //开辟MyDate对象的数据空间,并把改空间的首地址赋值给a
b = a; //将a存储空间的地址写到b的存储空间中
public class MyDate {
public int year = 2017;
public int month = 11;
public int day = 17;
public void show() {
System.out.println(year+"/"+month+"/"+day);
}
}
public class Test {
//一个引用变量只能唯一指向一个对象,而一个对象可以有过个引用变量来引用
public static void main(String[] args) {
MyDate a;//声明一个引用变量,引用变量在占中开辟内存空间
a = new MyDate();//在堆中创建一个对象,并把对象的地址赋值给引用变量
MyDate b = new MyDate();
MyDate c = new MyDate();
MyDate d = c;//将c引用变量中保存的地址赋值给b变量
a.show(); //2017/11/17
b.show(); //2017/11/17
c.show(); //2017/11/17
d.show(); //2017/11/17
//a、b互不影响
a.month = 12;
a.show(); //2017/12/17
b.show(); //2017/11/17
b.day = 20;
a.show(); //2017/12/17
b.show(); //2017/11/20
//c、d指向同一个地址,所有相互影响
c.year = 1949;
c.show(); //1949/11/17
d.show(); //1949/11/17
d.month = 10;
c.show(); //1949/10/17
d.show(); //1949/10/17
}
}
Java 多个引用类型变量引用同一个对象的更多相关文章
- Java中引用类型变量,对象,值类型,值传递,引用传递 区别与定义
一.Java中什么叫做引用类型变量?引用:就是按内存地址查询 比如:String s = new String();这个其实是在栈内存里分配一块内存空间为s,在堆内存里new了一个Stri ...
- 使用final关键字修饰一个引用类型变量时,是引用不能变,还是引用的对象不能变?
使用final关键字修饰一个引用类型变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的. 测试代码如下: package reviewTest; /** * @ClassName: ...
- 【转载】Java是传值还是传引用
1. 简单类型是按值传递的 Java 方法的参数是简单类型的时候,是按值传递的 (pass by value).这一点我们可以通过一个简单的例子来说明: /* 例 1 */ /** * @(#) Te ...
- 使用引用类型变量来访问所引用对象的属性和方法时,Java 虚拟机绑定规则
通过引用类型变量来访问所引用对象的属性和方法时,Java 虚拟机将采用以下绑定规则: 实例方法与引用变量实际引用的对象的方法进行绑定,这种绑定属于动态绑定,因为是在运行时由 Java 虚拟机动态决定的 ...
- java基础知识再学习--集合框架-对象的强、软、弱和虚引用
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhangjunhd.blog.51cto.com/113473/53092 本文 ...
- Java引用类型变量
Java引用类型变量 1.编译时类型:由声明该变量时使用的类型决定 2.执行时类型:由实际赋给该变量的对象决定 类型不一致的假设编译时类型和执行,可能会出现多态性 版权声明:本文博主原创文章.博 ...
- Java对象的强、软、弱和虚引用原理+结合ReferenceQueue对象构造Java对象的高速缓存器
//转 http://blog.csdn.net/lyfi01/article/details/6415726 1.Java对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变 ...
- Java中的基本类型和引用类型变量的区别
Java中的基本类型和引用类型变量的区别 学了一年多,说实话你要我说这些东西我是真说不出来是啥意思 基本类型: 基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值. 引用类型: ...
- Java多态-如何理解父类引用指向子类对象
java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是“向上转型”. 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类.我可以通过 Cat c = new ...
随机推荐
- Linux查看服务和强制结束服务
查看服务id命令,常用的两种: a: ps -ef | grep 服务名 b: netstat -antp 找到结果名称,然后 pki ...
- spark学习12(spark架构原理)
spark采用的是主从式的架构,主节点叫master,从节点是worker Driver 我们编写的spark就在Driver上,由driver进程执行. Driver是spark集群的节点之一,或你 ...
- Hystrix工作流程图
- Spring -- 如何为applicationContext.xml 添加 util 的 *.xsd文件
- Software Engineering at Google
Google的Fergus Henderson在Software Engineering at Google中介绍了Google的软件工程实践. 软件开发 源码仓库 单一源代码仓库,除了核心配置和安全 ...
- 构造函数=default表示什么?
myClass()=default;//表示默认存在构造函数
- php模拟发送GET和POST请求
php分别模拟发送GET和POST请求,非常实用的额,也可作PHP CURL入门级的理解教材的,示例代码如下: <?php /* ** php分别模拟发送GET与POST请求 ** */ fun ...
- 关于Jupyter Notebook默认起始目录设置无效的解决方法
一.问题描述 今天折腾jupyter的时候,突然觉得起始目录是用户根目录很麻烦,想着把他改成自己的某个文件,按照网上方法折腾半天也还是无效.东点点西看看才发现端倪. [win10以下好像没这个问题,修 ...
- Entity Framework 6 预热、启动优化
虽然文章题目是针对EF的,但涉及的内容不仅仅是EF. 场景介绍 目前在做的一个项目,行业门户,项目部分站点按域名划分如下: user.xxx.com:用户登陆注册 owner.xxx.com:个人用户 ...
- netty同时支持socket和http
项目需要使用netty做中转服务器,同时支持两种不同协议的客户端,经过几天查询资料终于找到合适的方案了,同时感谢Netty权威指南及论坛问答,开始贴代码 客户端1==>socket public ...