目录:
- 静态对象
- 单例模式
正文:
1. 静态 static ,在Java里表示“全局的”
静态内部类 (我的上一篇博客里有说戳我打开)
静态方法 (全局方法)
静态对象
静态代码块
静态对象,即全局对象,一直存在的
例如,
“恐龙已经灭绝了,太阳却一直存在”
:太阳是静态对象,恐龙是普通对象
“铁打的营盘、流水的兵”
:营盘是静态对象,兵是普通对象
静态对象的使用
定义静态对象:
public class Example
{
public static XXX a =new XXX();
}
使用静态对象:
Example.a.test();
test是XXX对象中的方法.
注意:并不需要创建Example的实例,直接用Example.a引用这个静态对象
要点:(重点)(敲黑板)
1 .在第一次使用时,静态对象被创建
例如:当Example类被使用时,Example.a被创建
如果Example从未被使用,则Example.a永不创建
2 .静态对象不会被系统回收
即,普通对象在失去引用后,会被GC回收
而静态对象永远不会被GC回收
3 .静态对象只有一个实例
即,无论创建多少个Example对象,Example.a只创建一次
2. 单例模式
单例,Single Instance,指全局唯一的实例
全局: 在程序运行期间一直存在
唯一: 只有一个实例
例如,
一个游戏程序,里面的人员角色道具宝贝都是可以创建和销毁的,但是基地、场景等对象是一直存的。
限制创建实例
一个class,怎么限制不让创建实例呢?
public class Earth
{
private Earth()
{
}
}
将构造方法声明为private,则调用者无法创建Earch实例...
使用static,可以创建一个全局对象
public class Earth
{
public static Earth i = new Earth();
}
Earth.i 指向一个全局的Earth对象(永不销毁)
全局唯一实例
public class Earth
{
public static Earth i = new Earth ();
private Earth()
{
}
}
- Earch.i 指向一个全局的Earth实例
- 调用者无法new出别的实例,所以它是全局唯一的实例
比如,一个游戏程序开始时,
main()
{
Config.i.load() 加载配置
Scene.i.load() 加载场景
startGame()...
}
总结:
1. 不是特别重要,不管你懂不懂,用起来都是简单的.
2. 知道静态对象在第一次使用时就被创建了,并且不被销毁,且只有一个实例.
3. 单例模式: 初学者了解一下知道有这种设计模式,能看懂代码, 然后用的使用想起在哪学的,再回来看下就好看.
全局对象:用static实现
唯一对象:将构造方法设为private
4. 不管懂不懂,先会用再说. 用多了理解也就越深.
emmmm最后, 笔者写的肯定有不好或者写错的地方, 请各位大佬检阅.
持续更新, 现在学的不精, 不敢更些深的, 以后学精了, 还在这基础上再细讲.