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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 2119391569 中级黑马   /  2015-3-3 12:25  /  1582 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求解:构造代码块和静态static的区别,构造代码块是给对象进行统一初始化,定义的是对象一出现就具有的属性,静态是用于修饰成员,那么两者之间有什么区别?

4 个回复

倒序浏览
静态代码块:随着类的加载而执行,故优于构造函数和构造代码块
只执行一次,并优先于主函数。
用于给类进行初始化的。


构造代码块是给所有对象进行初始化的,
对象一建立就执行,且优于构造函数执行。

static代码块给类进行初始化
构造代码块是给对象进行初始化
回复 使用道具 举报 1 0
代码块
      使用{}括起来的一段代码。
     根据位置不同可以分为:
        普通代码块:就是定义在方法中的代码块。
        构造代码块:是对所有的对象进行初始化的,所有对象的共有的特性可以在此代码块中初始化。而构造方法是对指定对象进行初始化的。只要对象一创建,那么构造代码块就会执行,并且优先于构造函数。
        静态代码块:使用static关键字声明的,只执行一次,优先于构造块。随着类的加载而加载。
        同步代码块:使用synchronized关键字声明的代码块,称为同步代码块。格式:synchronized(同步对象){}
[java] view plaincopy
1./**
2. * 描述人的类
3. */  
4.public class Person {  
5.  private String name;// 属性姓名  
6.  private int age;// 属性年龄  
7.   
8.  {  
9.    System.out.println("构造代码块");  
10.  }  
11.  static {  
12.    System.out.println("静态代码块");  
13.  }  
14.   
15.  public Person() {// 无参构造函数  
16.    System.out.println("无参构造函数");  
17.  }  
18.  public void say() {  
19.    {  
20.      System.out.println("普通代码块");  
21.    }  
22.   
23.  }  
24.   
25.  public void show() {  
26.    synchronized (this) {  
27.      System.out.println("同步代码块");  
28.    }  
29.  }  
30.   
31.  public static void main(String[] agrs) {  
32.    Person p = new Person();  
33.    p.show();  
34.    p.say();  
35.  }  
36.}  
37.结果:  
38.静态代码块  
39.构造代码块  
40.无参构造函数  
41.同步代码块  
42.普通代码块  
43.   

从结果可以看出:
静态代码块优先于构造代码块执行。
构造代码块优先于构造方法执行。
普通代码块和同步代码块定义在方法中,无先后顺序。
回复 使用道具 举报 1 0
静态static 是给类进行初始化的,构造代码块是给对象进行初始化的,而且执行顺序也不一样
回复 使用道具 举报
yangruijing 发表于 2015-3-3 20:24
代码块
      使用{}括起来的一段代码。
     根据位置不同可以分为:

回答的很好,赞一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马