那如果一个java程序有很多很多类,那static的方法岂不是一上来就要占用内存空间,难道程序启动的时候不会很慢吗?

解决方案 »

  1.   

    谁给你说的构造方式是static的,构造方法是用于初始化对象的,当实例化类为一个对象时才会调用构造方法。另外有静态块,同样用来做初始化的工作的,但是他也不是程序一启动就执行的,而是当你实例化一个类或者调用类的某个静态成员时执行
      

  2.   

    构造方法能设置成静态的吗?
    class A1{
    static A1(){

    }
    }会报错啊?
      

  3.   

    参考
    https://blog.csdn.net/ForWayfarer/article/details/2170672
      

  4.   

    并不是,使用static关键字的都无法进行实例化,所以每一个类的构造方法都不是隐式static关键字的。
    如果他使用了static关键字就无法是用new关键字了啊
    这样一来不就冲突了吗?
    static 关键字修饰的方法直接被一般方法调用,但是一般方法是通过对象实例化调用。
      

  5.   

    再多的static也并不会拖慢多少启动速度,计算金运算速度多快啊,,,
      

  6.   

    使用static修饰的方法或者属性,是全类共有的,属于类信息,被加载在 方法区,只会加载一次。
    使用new 关键字创建的实例,一般会在堆空间创建,常量池技术除外。
      

  7.   

    你在第一次接触一个类的时候,会对static变量赋值初始化,如果赋值是函数还会执行,在创建该类第一个对象之前
      

  8.   

    Java 面向对象 之 构造方法 http://www.verejava.com/?id=16992731753535
      

  9.   

    我也是个新手,看到了就参与下讨论,可能不太对,构造方法是对对象进行初始化的,但他不是静态块,静态块对所有的static修饰的属性、方法、类进行初始化,而且构造方法是new一个对象,他每次生成对象的内存地址都是不同的,静态块初始化的类,方法,或者属性,只有一个内存地址,只要有权限,都可以访问,但是使用者A改变这个内存地址所对应的值以后,使用者B访问时,就是改变后的值了
      

  10.   

    程序启动都是这样加载的啊,类多可能会慢点吧,对JVM进行调优也许能会加快启动
      

  11.   

    Class的装载包括3个步骤:加载(loading),连接(link),初始化(initialize) 
    static 阶段是属于 link阶段,而且你要明白一个事情,静态化的是方法的内容而非方法的执行之前详细讲过这个问题
    https://blog.csdn.net/cun_chen/article/details/50363149