请教一道JAVA编程题,十分感谢。。。
创建一个类并证明加载类的动作仅发生一次。证明该类的第一个实体的创建或者对static成员的访问都有可能引起加载最好可以直接运行,非常感谢!...
创建一个类并证明加载类的动作仅发生一次。证明该类的第一个实体的创建或者对static成员的访问都有可能引起加载
最好可以直接运行,非常感谢! 展开
最好可以直接运行,非常感谢! 展开
4个回答
展开全部
public class SingletonDemo {
private static SingletonDemo instance = null;
int value=0;
private SingletonDemo(){
}
public static SingletonDemo getInstace(){
if(instance == null)
{
instance = new SingletonDemo();
}
return instance;
}
}
public class TestSingletonDemo{
public static void main(String[] args) {
SingletonDemo s1 =new SingletonDemo();//创建第一个实例;
s1.getInstace();
s1.value = 5;//给value赋值;
SingletonDemo s1 = new SingletonDemo();//创建第二个实例;
System.out.println(s1.value);
System.out.println(s2.value);
}
}
发现两个值都相等,证明s1的时候给value赋值,当s2创建后,value仍然是5;所以证明这个类只有一个实例;是典型的单例模式;懒汉式的单例模式;还是饥饿式的单例模式,在此不详谈了。
希望对你有帮助。
private static SingletonDemo instance = null;
int value=0;
private SingletonDemo(){
}
public static SingletonDemo getInstace(){
if(instance == null)
{
instance = new SingletonDemo();
}
return instance;
}
}
public class TestSingletonDemo{
public static void main(String[] args) {
SingletonDemo s1 =new SingletonDemo();//创建第一个实例;
s1.getInstace();
s1.value = 5;//给value赋值;
SingletonDemo s1 = new SingletonDemo();//创建第二个实例;
System.out.println(s1.value);
System.out.println(s2.value);
}
}
发现两个值都相等,证明s1的时候给value赋值,当s2创建后,value仍然是5;所以证明这个类只有一个实例;是典型的单例模式;懒汉式的单例模式;还是饥饿式的单例模式,在此不详谈了。
希望对你有帮助。
展开全部
public class Test {
public static void main(String[] args) {
new Single();//实体的创建
//int i = Single.i;//对static成员的访问
//Single.m();//对static方法的访问
}
}
class Single {
public static int i = 0;
static {
System.out.println("load class");
}
public static void m() {}
}
单独的每一句都会打印"load class",而且仅会打印一次
public static void main(String[] args) {
new Single();//实体的创建
//int i = Single.i;//对static成员的访问
//Single.m();//对static方法的访问
}
}
class Single {
public static int i = 0;
static {
System.out.println("load class");
}
public static void m() {}
}
单独的每一句都会打印"load class",而且仅会打印一次
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单例模式,请参照
主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
if (instance==null)
instance=new Singleton();
return instance; }
}
使用了synchronized来保证线程安全。而且通过判断避免了资源浪费。
主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
if (instance==null)
instance=new Singleton();
return instance; }
}
使用了synchronized来保证线程安全。而且通过判断避免了资源浪费。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class SingletonDemo {
private static SingletonDemo instance = null;
private SingletonDemo(){
}
public static SingletonDemo getInstace(){
if(instance == null)
{
instance = new SingletonDemo();
}
return instance;
}
public static void main(String[] args) {
for(int i =0 ;i<3;i++){
System.out.println(SingletonDemo.getInstace());
}
}
}
private static SingletonDemo instance = null;
private SingletonDemo(){
}
public static SingletonDemo getInstace(){
if(instance == null)
{
instance = new SingletonDemo();
}
return instance;
}
public static void main(String[] args) {
for(int i =0 ;i<3;i++){
System.out.println(SingletonDemo.getInstace());
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询