Java单例模式
1、饿汉式
package singleton;
/**
* 饿汉式单例
* @author 蒋明原
*
*/
public class HungrySingleton {
/**jvm保证instance只被初始化一次*/
private static HungrySingleton instance = new HungrySingleton();
/**阻止外部使用new实例化对象*/
private HungrySingleton(){
}
/**
* 获取实例
* @return 唯一的instance
*/
public static HungrySingleton getInstance() {
return instance;
}
}
2、懒汉式
package singleton;
/**
* 懒汉式单例
* @author 蒋明原
*
*/
public class LazySingleton {
/**
* 阻止外界使用new实例化对象
*/
private LazySingleton() {
}
/**
* 只有在调用getInstance()时此类才会被装载
* 在SingletonKerriganF.java中说明了加载顺序
*/
private static class SingletonHolder {
/**
* 对象实例,jvm保证只初始化一次
*/
static final LazySingleton INSTANCE = new LazySingleton();
}
/**
* 获取实例
* @return 返回唯一实例
*/
public LazySingleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
3、懒汉式单例内部类加载顺序 (来自http://www.javaeye.com/topic/575052)
package singleton;
/**
* 实现单例访问Kerrigan的第六次尝试
* @author IcyFenix
* @see http://www.javaeye.com/topic/575052
*/
public class SingletonKerriganF {
private static String arg = null;
private static class SingletonHolder {
/**
* 单例对象实例
*/
static final SingletonKerriganF INSTANCE = new SingletonKerriganF();
}
public static SingletonKerriganF getInstance() {
return SingletonHolder.INSTANCE;
}
public SingletonKerriganF() {
System.out.println("Kerrigan get arg:" + getArg());
System.out.println("Kerrigan created!");
}
public static String getArg() {
return arg;
}
public static void setArg(String arg) {
SingletonKerriganF.arg = arg;
}
相关文档:
正多边形中最长的对角线就是主对角线,其余的对角线就是副对角线
lang 是 language(语言) 的简写
是java中常用方法最多的包
包含常用类
Runnable接口,只有一个方法run()
exit(int status)
终止当前正在运行的 Jav ......
0. 学习一章掌握一张,然后再不断的用。
1. 找一些比较经典的例子,源码(源码爱好者), 每个例子比较集中一种编程思想而设计的,比如在我的实践当中,我曾经学习过一个很经 典的例子就是用Java实现的HotDraw(源自SmallTalk),你可以用rolemodel或hotdraw在 搜索引擎上找一下,我记不大清 ......
选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们。
一、Java编程入门类
对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用 ......
//=============================输出奇数
public class OddTest {
public static boolean isOdd(int i){
return i % 2 != 0; //比较 i % 2 == 0;注: -1%2 = -1
}
public static void main(String[] args) {
for(int i = -10; i <= 10; i++) {
System.out.println(isOdd(i));
}
}
}
// ......
1、创建了一个对象后:
(1)没有在适当的地方释放掉
(2)在应该释放的地方没有做释放操作
例如:下面一段程序:
m_progressDlg = ProgressDialog.show(this, getString(R.string.market),getString(R.string.is_visiting), true);
new Thread() {
public v ......