您的位置:首页 > 运维架构

文章标题<div id="article_content" class="article_content tracking-ad" data-mod="popu_307" data-dsm="post

2017-06-29 15:24 961 查看
Java里初始化一个类的对象,通过初始化快或者构造方法进行数据赋值。与其相关的执行代码有这么几种:

静态初始化块

初始化块

构造方法

静态初始化块

静态初始化块只在类加载时执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

非静态初始化块

非静态初始化块在每次初始化实例对象的时候都执行一次,可以给任意变量赋值。

构造方法

在每次初始化实例对象时调用。

重点:执行顺序->

在加载类时执行一次静态初始化块(之后不再调用)。

在每次初始化实例对象时:先执行非静态初始化块,再执行构造方法。

若是概念不好懂,请看如下实例:

package com.mgh;

public class Main {

String name; // 声明变量name
String sex; // 声明变量sex
static int age;// 声明静态变量age

// 构造方法
public Main() {
System.out.println("通过构造方法初始化name");
name = "tom";
}

// 初始化块
{
System.out.println("通过初始化块初始化sex");
sex = "男";
}

// 静态初始化块
static {
System.out.println("通过静态初始化块初始化age");
age = 20;
}

public void show() {
System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);
}

public static void main(String[] args) {

// 创建对象
Main obj1 = new Main();
Main obj2 = new Main();
// 调用对象的show方法
obj1.show();
obj2.show();
}
}

output:
通过静态初始化块初始化age
通过初始化块初始化sex
通过构造方法初始化name
通过初始化块初始化sex
通过构造方法初始化name
姓名:tom,性别:男,年龄:20
姓名:tom,性别:男,年龄:20
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
[/code]

(function () {('pre.prettyprint code').each(function () {
var lines = (this).text().split(′\n′).length;varnumbering = $('').addClass('pre-numbering').hide();
(this).addClass(′has−numbering′).parent().append(numbering);
for (i = 1; i
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐