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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙峰 黑马帝   /  2012-5-26 23:42  /  3043 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙峰 于 2012-5-27 00:08 编辑

在定义类中:“构造代码块”和“静态成员”都是描述 不同对象的 共同属性。
构造代码块:给 “所有”的对象进行初始化, 对象一旦建立就会运行
静态成员:随着类的加载而加载,消失而消失(生命周期最长)。可优先于对象存在
静态成员只能访问静态成员。   

因为定义一个类之后,其目的不就是申明对象的吗?然后对 对象操作,那是不是大多数情况下,构造代码块 效果优于静态成员呢?    但是一般定义类中是不是很少使用构造代码块?

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

7 个回复

倒序浏览
构造代码块是属于对象的 在有对象创建的情况下才会执行 。。。
静态成员是属于类的  在类加载的时候就运行。。。
所以静态成员是优于构造代码块的。。。。。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
1,静态成员是优先于构造代码块执行的。凡是被static修饰过的成员,方法,类等都是加载到内存中的方法区里,而建立对象时,对象是被加载到栈内存里的,他们不在同一块内存上。
2,定义静态成员比较占资源,在效率上构造代码块 效果优于静态成员。
3,一般定义类中使用构造代码块还是很多的,你多写写代码就知道了

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
静态代码块:   
    特点:随着类的加载而执行,执行一次,优先于主函数执行。   
    作用,用于给类进行初始化的。  
构造代码块:是给对象初始化的!先执行静态代码块,再执行构造代码块,最后是构造函数!

静态成员和类的普通成员一样,也具有public、protected、private3种访问级别,也可以具有返回值、const修饰符等参数,外部访问类的静态成员只能通过类名来访问!

构造代码块确实很少用,一般面试问它们三个的执行顺序!先执行静态代码块,再执行构造代码块,最后构造函数!

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
静态成员是随着类的加载而加载到内存方法区中的,无论内存中是否有这个类的对象类中的静态成员此时已经可以初始化并开始使用了,当需要创建对象时才执行构造代码块,所以静态成员是先进入内存的,希望对你有帮助
回复 使用道具 举报
构造代码块:
作用:给该类当中所有对象进行初始化用的
静态成员主要指静态方法:
作用:给特定对象进行初始化,按具体需要调用,而构造函数也是给对应的对象进行初始化,(注意二者有区别的),其实静态方法使用的地方是有很多的,你可以查一下API帮助文档,里边有很多方法都是涉及到静态调用,它和构造代码块之间并不存在谁优谁劣的比较性。
回复 使用道具 举报
孙峰 黑马帝 2012-5-27 09:34:37
7#
徐炯 发表于 2012-5-27 00:51
1,静态成员是优先于构造代码块执行的。凡是被static修饰过的成员,方法,类等都是加载到内存中的方法区里 ...

老毕说一般构造代码块很少用:#
回复 使用道具 举报
徐炯 中级黑马 2012-5-27 09:57:57
8#
孙峰 发表于 2012-5-27 09:34
老毕说一般构造代码块很少用

嗯,我用的比较多,个人习惯问题。
老毕应该说的是实际开发中用的少,因为涉及到框架什么的,很多东西都封装好了,不需要我们写。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马