java对象创建与引用变量的详解

创建对象

ClassName objectRefVar = new ClassName();
这条语句包含了三个部分:

  1. 创建对象 ——new ClassName();
    用new操作符创建了一个对象(实例化),且相应的构造方法被调用;新创建的对象在内存中被分配空间。它们可以通过引用变量来访问.

  2. 声明对象引用变量 ——ClassName objectRefVar;

    本质上来说,一个类是一个程序员定义的类型。类是一种引用类型,这意味着该类类型的变量都可以引用该类的一个实例(即实例化对象)。实例对象的数据和方法可以运用点操作符(.)通过对象的引用变量进行访问。

  3. 将对象的引用赋值给这个引用变量——objectRefVar = new ClassName();

下面是一个例子:

Circle myCircle-new Circle();

变量 myCircle中放的是对 Circle 对象的一个引用

注意事项:

  1. 从表面上看,对象引用变量中似乎存放了一个对象,但事实上,它只是包含了对该对象的引用。严格地讲,对象引用变量和对象是不同的,但是大多數情况下,这种差异是可以忽略的。因此,可以简单地说 myCircle 是一个 Circle 对象,而不用冗长地描述说, myCircle 是一个包含对 Circle 对象引用的变量
  2. 另外在 Java 中,数组被看作是对象。数组是用 new 操作符创建的。一个数组变量实际 上是一个包含数组引用的变量。
  3. 创建匿名对象
    new Circle()或者 System.out.println("Area is " + new Circle(5).getArea();
    前面的语句创建了一个 Circle 对象。后面的语句创建了一个 Circle 对象,然后调用它的 getArea 方法返回其面积

基本类型变量和引用类型变量的区别

存储的值

每个变量都代表一个存储值的内存位置。声明一个变量时,就是在告诉编译器这个变量 可以存放什么类型的值。
在这里插入图片描述

赋值

基本类型赋值:
在这里插入图片描述
引用类型赋值:在这里插入图片描述
注意:

  1. 如图 9-9 所示,执行完赋值语句 C1-C2 之后,C1指向 C2 所指的同一个对象。C1 以前引用的对象就不再有用,因此,现在它就成为垃圾。垃圾会占用内存空间。Java 运行系统会检测垃圾并自动回收它所占的空间,这个过程称为垃圾回收(garbage collection)。
  2. 如果你认为不再需要某个对象时,可以显式地给该对象的引用变量赋null 值。如 果该对象没有被任何引用变量所引用,Java 虚拟机将自动回收它所占的空间。

引用数据和NULL

如果一个引用类型的数据域没有引用任何对象,那么这个数据域就有一个特殊的 Java 值 null,如图所示:
在这里插入图片描述
null 同 true 和 false— 样都是一个直接量。true 和 false 是 boolean 类型直接量, 而 null 是引用类型直接量。

  • 引用类型数据域的默认值是 null
  • 数值类型数据域的默认值是 0
  • boolean 类型数据域的默认值是 false
  • 而 char类型数据域的默认值是 ’\u00000。

特别注意:Java 没有给方法中(如main方法)的局部变量设置默认值,局部变量还是需要初始化

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值