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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 康大玮 中级黑马   /  2012-5-21 21:18  /  1733 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

毕老师的这句话“静态代码块用于给类进行初始化,而构造代码块用于给对象初始化。”
怎么理解?

7 个回复

倒序浏览
本帖最后由 冯越 于 2012-5-21 21:25 编辑

1.一个类的静态代码块在这个类第一次被类加载器加载的时候就会被执行,不管你有没有new一个对象出来。
比如说:你调用类内的静态方法或静态成员,此时这个类被加载进去,虽然你没有new类的对象可这次静态快内的代码是会执行的,和你new不new对象没有任何关系。所以可以理解为给类进行初始化。
2.而构造代码块是当你new对象的时候才会被执行,所以可以理解为给对象初始化。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
静态代码块用于给类进行初始化,而构造代码块用于给对象初始化。
静态代码块是随着类的加载而调用的,所以他就是给类进行初始化的,
而构造代码块是new对象的时候才调用的,所以说是对对象进行初始化的
回复 使用道具 举报
类本身也是一个对象,只不过是一个比较特殊的对象,也需要创建,所以也必须有初始化的行为,静态代码块就是用来初始化这个特殊对象的。
回复 使用道具 举报
|--代码块
    |--局部代码块
        |--定义
            |--存在于一个控制结构(作用于)内的变量
        |--特点
            |--无名称,不可以被调用
            |--限制局部变量的生命周期
    |--构造代码块
        |--定义
            |--与对象相关,构造对象的代码块,用于为对象进行统一初始化
        |--特点
            |--无名称,不可以被调用
            |--对象建立时就运行且优先于构造函数执行
            |--具备初始化的通用性
    |--静态代码块
        |--定义
            |--与类有关,用于为类进行初始化
        |--特点
            |--无名称,不可以被调用
            |--随着类的加载而执行且只为类进行一次初始化
            |--优先于主函数执行
        |--用法
            |--当类在没有对象,但需使用其功能時,进行初始化的操作可以通过静态代码块完成
我只和为你讲解代码块的定义和特点,但在理解这些内容之前你必须搞清楚什么是类什么是对象,这个内容你还是去反复的观看视频去慢慢理解,在这之后上面的内容你自然就能理解了。这东西不难,只是以前没有接触过,所以现在理解起来比较陌生,时间久了你自然就轻车熟路了。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 25修成···

查看全部评分

回复 使用道具 举报
静态代码块当类加载时就会被加载执行,给类进行初始化,
构造代码块只要建立对象就会被执行,选择相应的构造函数初始化对象。
回复 使用道具 举报
本帖最后由 小小企鹅 于 2012-10-27 22:39 编辑

静态代码块不需类实例,随着类加载而执行,可以对类进行初始化,创建单例模式用static修饰
构造代码块在对象创建时执行
回复 使用道具 举报
刘聪 中级黑马 2012-5-22 14:58:47
8#
再爆点料:
在类第一次加载的时候,将会进行静态代码块的初始化。与对象实例一样,静态代码块的默认初始值是:0、false、null,除非显示的将他们设置为其他值。所有的静态代码块初始化语句以及静态初始化块都将按照类定义中出现的顺序执行。使用下面这种方式,可以编写一个没有main方法的“hello world”程序:
  1. public class Hello
  2. {
  3.     static
  4.     {
  5.         System.out.println("Hello,world");
  6.     }
  7. }
复制代码
当用java Hello调用这个类时,这个类就会被加载进行,静态初始化块将会打印“Hello,world”。运行结束会得到一个“main is not defined”的错误,可以通过System.exit(0)干掉它。O(∩_∩)O~

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马