Java高级教程 - 创建和销毁对象

13465705-e42367862b6f53fc.png

通过构造函数创建

Java是面向对象的语言,因此创建类实例是Java最重要的一个功能。创建Java对象的时候,构造函数扮演了重要的角色。

隐式构造函数

Java运行定义一个类而无需定义构造函数,这并不意味这构造函数不存在,只是Java编译器会自动的替无构造函数的类生成一个默认无参数的构造函数。例如


13465705-27d971ddb2854145.png

无参构造函数

提供无参构造函数相当于Java编译器编译是插入的无参构造函数显示提供


13465705-e6d308480fadedba.png

带参数的构造函数

带参数的构造函数是创建实例,初始化最常用的方式,例如


13465705-be0ecb535e896220.png

同样的,可以创建多个构造函数,并且构造函数可以互相调用,例如


13465705-08afd7960cc3e102.png

初始化块

Java 可以通过初始化块来进行初始化,这个特性用的较少,但是仍然需要知道,并且初始化块会在构造函数调用之前调用。


13465705-7e216832a191228a.png

字段默认值

Java对类的字段提供了默认值

boolean 默认 false

byte 默认 0

short 默认 0

int 默认 0

long 默认 0L

char 默认 \u0000

float 默认 0.0f

double 默认 0.0d

Object 默认 null

例如:


13465705-82a17da72566e205.png

输出


13465705-a58e9857d5bd051d.png

静态初始化块

相对于初始化块,静态初始化块只是在初始化块前加了static


13465705-f77e71634f0e92bf.png

对象的销毁

对于Java来说,由于有垃圾回收,所以对象创建不再使用后,是有垃圾回收线程默认回收的。但是可以是公用finalizer()方法,来控制垃圾回收。当时先了finalizer()方法后,Java会将其放入Finalizer的垃圾回收队列中。finalizer()是一个很危险的操作,因为它会阻止对象被回收,尤其是操作错误是会导致对象复活,导致垃圾回收失败,所以尽可能不要使用。

创建对象的模式

单例模式

单例模式可以很简单的创建一个对象,并且保证整个应用中仅有一个对象存在。 例如:


13465705-80046e172b3f9a67.png

或者:


13465705-54f68f3c02f4eaf0.png

或者为了线程安全


13465705-72773504127f87e3.png

当然还可以通过双检锁,静态子类,枚举等方式创建单例

工厂方法

使用工厂方法模式,可以轻松的创建多个对象例如:


13465705-4bab2d1e3fbd89f2.png

欢迎Java工程师朋友们加入Java进阶高级架构群:855355016

本群提供免费的学习指导 架构资料 以及免费的解答

不懂得问题都可以在本群提出来 之后还会有职业生涯规划以及面试指导

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值