服务器之家

服务器之家 > 正文

深入浅析Java中普通代码块、构造代码块与静态代码块

时间:2020-06-01 13:46     来源/作者:王景林

//执行顺序:(优先级从高到低。)

静态代码块>mian方法>构造代码块>构造方法。

其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。

1.普通代码块

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public static void main(String[] args) {
/*普通代码块:
*直接定义在在方法或语句中出现”{普通代码的执行语句}“的就称为普通代码块。
*普通代码块执行顺序由他们在代码中出现的次序决定--“先出现先执行”
* */
{
  System.out.println("这里是普通代码块A");
}
//new A();
{
  System.out.println("这里是普通代码块B");
}
}

执行结果:这里是普通代码块A
     这里是普通代码块B

2.静态代码块与构造代码块

在java中使用static关键字声明的代码块。

常用于对类的初始化,每个静态代码块只会执行一次(类在内存中加载时执行,类在内存中加载后类已经存在)由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行。

ps:

1 静态代码块不能存在于任何方法体内。

2 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。

构造块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。

构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class structure {
{
System.out.println("这里是普通代码块");//所有类中有一个默认的构造函数,这里的代码块为构造代码块,在类中的对象被创建时执行
}
public static void main(String[] args) {
/*普通代码块:
*直接定义在在方法或语句中出现”{普通代码的执行语句}“的就称为普通代码块。
*普通代码块执行顺序由他们在代码中出现的次序决定--“先出现先执行”
* */
{
System.out.println("这里是普通代码块A");
}
new structure();//第二次类加载时静态代码块不执行
//new A();
{
System.out.println("这里是普通代码块B");
}
}
static{
System.out.println("这里是静态代码块");
}
}

执行结果:

这里是静态代码块//优先于主函数
这里是普通代码块A
这里是普通代码块//类中的对象被创建时执行,每创建一次执行一次,在加一句new structure(); 执行结果为:

这里是普通代码块B

3.概要总结

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class structure {
{
System.out.println("这里是普通代码块");
}
public static void main(String[] args) {
{
System.out.println("这里是普通代码块A");
}
//new structure();
//new structure();
new A();
{
System.out.println("这里是普通代码块B");
}
}
static{
System.out.println("这里是静态代码块");
}
}
class A{
static{
System.out.println("这里是A中的普静态代码块1");
}
{
System.out.println("这里是A中的普通代码块1");
}
{
System.out.println("这里是A中的普通代码块2");
}
}

执行结果:

这里是静态代码块
这里是普通代码块A
这里是A中的普静态代码块1
这里是A中的普通代码块1
这里是A中的普通代码块2
这里是普通代码块B

优先级总结:静态代码块>Main()>构造代码块

原文链接:http://www.cnblogs.com/netlws/archive/2016/08/02/5728346.html

相关文章

热门资讯

歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意 2019-07-07
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部

281
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40