通过构造函数创建
Java是面向对象的语言,因此创建类实例是Java最重要的一个功能。创建Java对象的时候,构造函数扮演了重要的角色。
隐式构造函数
Java运行定义一个类而无需定义构造函数,这并不意味这构造函数不存在,只是Java编译器会自动的替无构造函数的类生成一个默认无参数的构造函数。例如
无参构造函数
提供无参构造函数相当于Java编译器编译是插入的无参构造函数显示提供
带参数的构造函数
带参数的构造函数是创建实例,初始化最常用的方式,例如
同样的,可以创建多个构造函数,并且构造函数可以互相调用,例如
初始化块
Java 可以通过初始化块来进行初始化,这个特性用的较少,但是仍然需要知道,并且初始化块会在构造函数调用之前调用。
字段默认值
Java对类的字段提供了默认值
boolean 默认 false
byte 默认 0
short 默认 0
int 默认 0
long 默认 0L
char 默认 \u0000
float 默认 0.0f
double 默认 0.0d
Object 默认 null
例如:
输出
静态初始化块
相对于初始化块,静态初始化块只是在初始化块前加了static
对象的销毁
对于Java来说,由于有垃圾回收,所以对象创建不再使用后,是有垃圾回收线程默认回收的。但是可以是公用finalizer()方法,来控制垃圾回收。当时先了finalizer()方法后,Java会将其放入Finalizer的垃圾回收队列中。finalizer()是一个很危险的操作,因为它会阻止对象被回收,尤其是操作错误是会导致对象复活,导致垃圾回收失败,所以尽可能不要使用。
创建对象的模式
单例模式
单例模式可以很简单的创建一个对象,并且保证整个应用中仅有一个对象存在。 例如:
或者:
或者为了线程安全
当然还可以通过双检锁,静态子类,枚举等方式创建单例
工厂方法
使用工厂方法模式,可以轻松的创建多个对象例如:
作者:Java高级技术
链接:https://www.jianshu.com/p/c84bd3d10ea8