文章标题<div id="article_content" class="article_content tracking-ad" data-mod="popu_307" data-dsm="post
2017-06-29 15:24
961 查看
Java里初始化一个类的对象,通过初始化快或者构造方法进行数据赋值。与其相关的执行代码有这么几种:
静态初始化块
初始化块
构造方法
在每次初始化实例对象时:先执行非静态初始化块,再执行构造方法。
若是概念不好懂,请看如下实例:
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
静态初始化块
初始化块
构造方法
静态初始化块
静态初始化块只在类加载时执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。非静态初始化块
非静态初始化块在每次初始化实例对象的时候都执行一次,可以给任意变量赋值。构造方法
在每次初始化实例对象时调用。重点:执行顺序->
在加载类时执行一次静态初始化块(之后不再调用)。在每次初始化实例对象时:先执行非静态初始化块,再执行构造方法。
若是概念不好懂,请看如下实例:
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,性别:男,年龄:201
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
相关文章推荐
- <div class="article_content tracking-ad" id="article_content" data-mod="popu_307" data-dsm="post"> <
- 正则表达式- 将div#demo.demo转化成<div id="demo" class="demo"></div>
- 【easyUI】<div class="easyui-panel" >
- <bean id="ViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- [Vue warn]: Attribute "id" is ignored on component <div> because the component is a fragment instan
- jQuery选择器的过滤器,即对选择的结果再进行一个过滤(如我不想要在<div id="test"></div>这里的input控件)
- HTML 学习笔记(二)frameset、frame、iframe、#……id、.……class、<link rel=……、url("……")
- <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
- volley(5) 参数total_remain:totalqty, data:[{ bar_status:XX , bar_code: "XX",bar_remain:XX, bar_whcode:"XX" , bar_prodcode:"XX",bar_id:XX,bar_location: "XX", pr_detail: "XX" , bar_batchcode:method:POST
- springMVC 注解标签 结合 <context:component-scan>使用的功能等效于 <bean id="XXX" class="XXX">
- <div clsss="nav">xxx</div> 和.<div id="nav">xxx</div> 的区别
- <div class="col-xs-6 col-sm-6 col-md-6">
- hibernate中配置<param name="sequence">SEQ_CLASS_ID</param>
- hibernate中配置<param name="sequence">SEQ_CLASS_ID</param>
- <div class="clear"></div>
- 从客户端(content="<span class="Apple-s...")中检测到有潜在危险的 Request.Form 值。
- 解析<classpathentry kind="src" path="WebContent"/>
- <div class="clear"></div>
- Hibernate中id设置<generator class="uuid.hex" />
- [Vue warn]: Attribute "id" is ignored on component <div> because the component is a fragment instanc