引用类型变量在声明后必须引用对象才能使用。

一个引用变量只能唯一指向一个对象,但同一个对象可被多个引用类型变量引用。

如: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 多个引用类型变量引用同一个对象的更多相关文章

  1. Java中引用类型变量,对象,值类型,值传递,引用传递 区别与定义

    一.Java中什么叫做引用类型变量?引用:就是按内存地址查询       比如:String s = new String();这个其实是在栈内存里分配一块内存空间为s,在堆内存里new了一个Stri ...

  2. 使用final关键字修饰一个引用类型变量时,是引用不能变,还是引用的对象不能变?

    使用final关键字修饰一个引用类型变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的. 测试代码如下: package reviewTest; /** * @ClassName: ...

  3. 【转载】Java是传值还是传引用

    1. 简单类型是按值传递的 Java 方法的参数是简单类型的时候,是按值传递的 (pass by value).这一点我们可以通过一个简单的例子来说明: /* 例 1 */ /** * @(#) Te ...

  4. 使用引用类型变量来访问所引用对象的属性和方法时,Java 虚拟机绑定规则

    通过引用类型变量来访问所引用对象的属性和方法时,Java 虚拟机将采用以下绑定规则: 实例方法与引用变量实际引用的对象的方法进行绑定,这种绑定属于动态绑定,因为是在运行时由 Java 虚拟机动态决定的 ...

  5. java基础知识再学习--集合框架-对象的强、软、弱和虚引用

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhangjunhd.blog.51cto.com/113473/53092 本文 ...

  6. Java引用类型变量

    Java引用类型变量 1.编译时类型:由声明该变量时使用的类型决定 2.执行时类型:由实际赋给该变量的对象决定    类型不一致的假设编译时类型和执行,可能会出现多态性 版权声明:本文博主原创文章.博 ...

  7. Java对象的强、软、弱和虚引用原理+结合ReferenceQueue对象构造Java对象的高速缓存器

    //转 http://blog.csdn.net/lyfi01/article/details/6415726 1.Java对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变 ...

  8. Java中的基本类型和引用类型变量的区别

    Java中的基本类型和引用类型变量的区别   学了一年多,说实话你要我说这些东西我是真说不出来是啥意思     基本类型: 基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值. 引用类型: ...

  9. Java多态-如何理解父类引用指向子类对象

    java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是“向上转型”. 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类.我可以通过   Cat c = new ...

随机推荐

  1. Linux查看服务和强制结束服务

    查看服务id命令,常用的两种:      a: ps -ef | grep 服务名      b: netstat -antp             找到结果名称,然后            pki ...

  2. spark学习12(spark架构原理)

    spark采用的是主从式的架构,主节点叫master,从节点是worker Driver 我们编写的spark就在Driver上,由driver进程执行. Driver是spark集群的节点之一,或你 ...

  3. Hystrix工作流程图

  4. Spring -- 如何为applicationContext.xml 添加 util 的 *.xsd文件

  5. Software Engineering at Google

    Google的Fergus Henderson在Software Engineering at Google中介绍了Google的软件工程实践. 软件开发 源码仓库 单一源代码仓库,除了核心配置和安全 ...

  6. 构造函数=default表示什么?

    myClass()=default;//表示默认存在构造函数

  7. php模拟发送GET和POST请求

    php分别模拟发送GET和POST请求,非常实用的额,也可作PHP CURL入门级的理解教材的,示例代码如下: <?php /* ** php分别模拟发送GET与POST请求 ** */ fun ...

  8. 关于Jupyter Notebook默认起始目录设置无效的解决方法

    一.问题描述 今天折腾jupyter的时候,突然觉得起始目录是用户根目录很麻烦,想着把他改成自己的某个文件,按照网上方法折腾半天也还是无效.东点点西看看才发现端倪. [win10以下好像没这个问题,修 ...

  9. Entity Framework 6 预热、启动优化

    虽然文章题目是针对EF的,但涉及的内容不仅仅是EF. 场景介绍 目前在做的一个项目,行业门户,项目部分站点按域名划分如下: user.xxx.com:用户登陆注册 owner.xxx.com:个人用户 ...

  10. netty同时支持socket和http

    项目需要使用netty做中转服务器,同时支持两种不同协议的客户端,经过几天查询资料终于找到合适的方案了,同时感谢Netty权威指南及论坛问答,开始贴代码 客户端1==>socket public ...