黑马程序员技术交流社区

标题: 构造代码块和静态static的区别? [打印本页]

作者: 2119391569    时间: 2015-3-3 12:25
标题: 构造代码块和静态static的区别?
求解:构造代码块和静态static的区别,构造代码块是给对象进行统一初始化,定义的是对象一出现就具有的属性,静态是用于修饰成员,那么两者之间有什么区别?
作者: zfgrinm    时间: 2015-3-3 12:35
静态代码块:随着类的加载而执行,故优于构造函数和构造代码块
只执行一次,并优先于主函数。
用于给类进行初始化的。


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

static代码块给类进行初始化
构造代码块是给对象进行初始化

作者: yangruijing    时间: 2015-3-3 20:24
代码块
      使用{}括起来的一段代码。
     根据位置不同可以分为:
        普通代码块:就是定义在方法中的代码块。
        构造代码块:是对所有的对象进行初始化的,所有对象的共有的特性可以在此代码块中初始化。而构造方法是对指定对象进行初始化的。只要对象一创建,那么构造代码块就会执行,并且优先于构造函数。
        静态代码块:使用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.   

从结果可以看出:
静态代码块优先于构造代码块执行。
构造代码块优先于构造方法执行。
普通代码块和同步代码块定义在方法中,无先后顺序。
作者: 硫氢化铁    时间: 2015-3-4 10:47
静态static 是给类进行初始化的,构造代码块是给对象进行初始化的,而且执行顺序也不一样
作者: fightingwang    时间: 2015-3-4 11:01
yangruijing 发表于 2015-3-3 20:24
代码块
      使用{}括起来的一段代码。
     根据位置不同可以分为:

回答的很好,赞一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2