class Singleton
{
 private static Singleton instance;
 private Singleton(){System.out.println("执行了!");}
 public static Singleton getInstance()//static方法
 {
 if(instance==null)
  {
    instance =new Singleton();//这里执行构造器了,但是构造器没有用static修饰啊?
  }
 return instance;
 }}

解决方案 »

  1.   

     instance =new Singleton();//这里执行构造器了,但是构造器没有用static修饰啊?
    他是 new Singleton() ; 何必要 staticpublic static Singleton getInstance()//static方法
    你外部通过 Singleton.getInstance() 就得到你的 
    private static Singleton instance; 定义的instance了 ;不明白你为什么问 {这里执行构造器了,但是构造器没有用static修饰啊?}
      

  2.   


    他是 new Singleton() ; 何必要 staticnew一个对象时不是默认执行构造器吗?
    private Singleton(){System.out.println("执行了!");}//构造方法!!!
      

  3.   

    静态的方法或变量会在javac编译时就在堆内存中开辟空间,在那时可能就已经new了一个对象吧!
      

  4.   

    static不能修饰构造方法吗?为什么?
      

  5.   

    需要区分static和instance的概念
    static指的是在引用类的时候就自动为相应的变量和函数申请了相应的内存。
    instance需要自己来分配内存。自己来为参照类型来分配内存的时候,会调用到
    构造函数。可不可以使用本质上就是所指向的内存是否是有效的。
      

  6.   

    没有回答我的问题。
    static不能修饰构造方法吗?为什么?
      

  7.   


    能不能详细一点? private Singleton(){System.out.println("执行了!");}
    这句可不可以写: private static Singleton(){System.out.println("执行了!");}
      

  8.   

    new Singleton();这个东西是创建一个对象!
    比如你这个class中有个static的方法function()
    你可以直接写 instance=function()
    如果是非静态的function()
    你只能写instance=new singleton.function()
    你能理解这个差别吗?