A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王春祥 中级黑马   /  2012-3-18 23:23  /  2492 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java为什么没有静态构造函数呢,将所有新建对象做相同的初始化,这是可以说的通的吧

9 个回复

倒序浏览
因为有构造代码块的存在  构造代码块就是实现你说的这个功能的   他可以为所有对象统一初始化一些公有的属性
   静态时随着类的加载而存在的  比对象先加载进内存  如果构造函数可以用static修饰的话  这个太浪费空间了    对象都用完了 不存在了 而他的构造函数还在内存
这不是浪费资源吗?    所以就出现了构造代码块  
   内存加载顺序是  静态成员  构造代码块    构造函数
回复 使用道具 举报
首先静态是存放在方法区中的,和静态成员变量是一样一样的。

如果是静态的话:
1.当第一次建立一个对象的时候,没有问题
2.当第二次建立对象的时候,就会将第一次建立的对象覆盖掉,原来的对象的数据就会全部丢失,对我们来说是一个灾难
回复 使用道具 举报
一切皆对象
静态的都是类,已经定义好的
构造函数是实例化成一个对象
回复 使用道具 举报
是否要静态,需要看需求:
1,知道单例设计模式是怎么定义构造函数的吗?就是构建一个静态的构造函数,字节码一加载进内存,就自动建立对象,并对外提高一个获取对象的静态方法;
2,枚举的原理是什么?其实就是用静态构造函数建立对应个数的对象;
3,总之,静态可以修饰类,也可以修饰类的成员变量,成员函数和构造函数;
回复 使用道具 举报
所有类都是继承于Object的, 在所有类实例化为对象的时候, 必然会先调用Object的默认构造函数;   
如果一个类的构造函数是静态的, 那么它将无法调用Object的构造函数;
静态函数就是指该函数不和具体对象相关,只和类相关, 但是构造函数是和对象直接关联的;
回复 使用道具 举报
    静态类使用关键字static,是可以被继承的,构造函数可以被子类重写和继承。还有,静态类不是不可以实例化,而是不需要实例化就可以用。
    构造方法用处就是类实例化的时候做一些初始化操作,静态类只能是内部类。
回复 使用道具 举报
贠(yun)靖 发表于 2012-3-18 23:29
因为有构造代码块的存在  构造代码块就是实现你说的这个功能的   他可以为所有对象统一初始化一些公有的属 ...

谢谢,再问下对象建立时,构造方法才会在方法区出现吗,对象用完构造方法就消失吗,再建立对象时再产生吗
回复 使用道具 举报
就是类中静态代码块啊。
回复 使用道具 举报

RE: 静态构造函数

王春祥 发表于 2012-3-19 14:53
谢谢,再问下对象建立时,构造方法才会在方法区出现吗,对象用完构造方法就消失吗,再建立对象时再产生吗 ...

嗯,只要有创建对象了,构造方法必然会被调用,而对象用完后是由垃圾回收器不定时回收的,具体怎么搞就不知道了,对象都没了,构造方法存在也没意义,我认为构造方法应该先释放内存,因为它只随对象加载一次,完了就没用了,而对象还可以调用其他方法和属性
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马