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

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

如: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. 第二篇:Spark SQL Catalyst源码分析之SqlParser

    /** Spark SQL源码分析系列文章*/ Spark SQL的核心执行流程我们已经分析完毕,可以参见Spark SQL核心执行流程,下面我们来分析执行流程中各个核心组件的工作职责. 本文先从入口 ...

  2. 用户iis可以用外网ip访问,用内网访问报错404

    如下,没有添加内网ip绑定

  3. Java实现简单网页抓取

    需求说明:使用Java抓取网页信息,并以字符串的形式返回. 使用Java代码实现: package net.ibuluo.spider.util; import java.io.IOException ...

  4. yii2:模块

    yii2:模块 模块不同于frontend/frontback单独的前后台单独的主题项目,模块不能单独部署,必须属于某个应用主体(如前后台:frontend/frontback). 模块置于modul ...

  5. Linux命令详解-cd

    Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧.     ...

  6. Django进阶Model篇006 - 多表关联查询

    接着前面的例子,举例多表查询实例如下: 1.查询作战的所有完整信息. >>> AuthorDetail.objects.values('sex','email','address', ...

  7. java处理HTTP请求

    import com.diyfintech.wx.service.HttpService; import org.springframework.stereotype.Service; import ...

  8. cf 814C 思维

    http://codeforces.com/contest/814/problem/C 给定一个字符串s,长度小于1500,进行q次询问q<=20w,每次询问输入一个m和一个字符c,求将最多m个 ...

  9. 23-THREE.JS 光照材质

    <!DOCTYPE html> <html> <head> <title></title> <script src="htt ...

  10. LeetCode OJ:Binary Tree Postorder Traversal(后序遍历二叉树)

    Given a binary tree, return the postorder traversal of its nodes' values. For example:Given binary t ...