Java中的构造代码块
代码块
----a静态代码块
----b构造代码块
----c普通代码块
执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。
a.静态代码块:
静态代码块在加载该类的时候执行,且只执行一次!
class Test{
public static void main(String args[])
{
Demo d1=new Demo();Demo d2=new Demo(); }
} class Demo{
static{
System.out.println("这是一个静态代码块,看我会执行几次");
}
} //运行结果
//这是一个静态代码块,看我会执行几次
b.构造代码块,执行顺序大于构造方法
b.1.java编译器编译生成一个java文件时,会把变量声明移动到一个类的最前端。
b.2.java中的成员变量初始化其实都是在构造函数中执行的。
b.3.java编译器编译时,会把构造代码块中的代码移到构造函数中执行,并且,原本构造函数中的方法是在最后执行的。(Demo2运行没有出错,证明了这点,也可以反编译)
b.4.成员变量的显示初始化和构造代码块中的代码是按代码的先后顺序来执行的。(比较Demo3和Demo4)
//主函数
public class Test{ public static void main(String[] args) { Demo d=new Demo();
System.out.println(d.i);
}
} //Demo1
//执行结果i=30000;
public class Demo { int i=10000;
{
i=20000;
}
public Demo()
{
i=30000;
}
} //Demo2
//执行结果i=30000;
public class Demo { {
i=20000;
}
public Demo()
{
i=30000;
}
int i=10000;
} //Demo3
//执行结果i=10000;
public class Demo { {
i=20000;
}
public Demo()
{
// i=30000;
}
int i=10000;
} //Demo4
//执行结果i=20000;
public class Demo {
int i=10000; {
i=20000;
} public Demo()
{
// i=30000;
} }
普通代码块,作用不大,唯一的作用就是让里面的变量资源尽快被释放
//普通代码块
public class Test{ public static void main(String[] args) {
{
System.out.println("我是一个普通的代码块");
} }
}
Java中的构造代码块的更多相关文章
- 2.java中c#中statc 静态调用不同之处、c#的静态构造函数和java中的构造代码块、静态代码块
1.java和c#静态成员调用的不同之处 static 表示静态的,也就是共享资源,它是在类加载的时候就创建了 java中 可以通过实例来调用,也可以通过类名.成员名来调用,但是一般最好使用类名. ...
- 6、java中的构造代码块
/* 演示构造代码块的应用 */ class Person { String name; int age; //构造代码块 { cry(); } Person(String name, int age ...
- java中的静态代码块、构造代码块、构造方法
运行下面这段代码,观察其结果: package com.test; public class HelloB extends HelloA { public HelloB() { } { System. ...
- Java中的局部代码块、构造代码块、静态代码块
局部代码块: 作用:控制变量的生命周期: 在程序中,当我们已经使用完 x 后,并且在接下来的代码中,不会再用到x,那么就没必要让x 在内存中占用空间了,这用情况下,可以使用 局部代码块,将x及其所设计 ...
- 5.1JAVA基础复习——JAVA中的静态代码块、构造代码块、构造函数、局部代码块区别
构造代码块: 在类中定义可以给所有对象进行初始化.局部代码块: 在方法中定义属性的生命周期.静态代码块: 在类中定义用于给类调用时属性的初始化 构造函数与构造代码块的区别: 构造函数是给对应的对象进行 ...
- Java面向对象之构造代码块 入门实例
一.基础概念 1.构造代码块,给所有对象进行初始化. 2.构造函数,只给对应的对象初始化. 3.局部代码块,控制局部变量的生命周期. 二.实例代码 class Person { private int ...
- java中静态的代码块,静态变量,静态方法
简单了解一下java虚拟机--jvm几个内存区域: 方法区:在java的虚拟机中有一块专门用来存放已经加载的类信息.常量.静态变量以及方法代码的内存区域, 常量池:常量池是方法区的一部分,主要用来存放 ...
- java中的静态代码块等执行顺序
http://www.cnblogs.com/naruto469/p/3608459.html public class Print { 2 3 public Print(String s){ 4 S ...
- java中的static代码块为什么只执行一次
原因在最后,这是其中的一个小例子. 如: SessionFactory负责保存和使用所有配置信息,消耗内存资源非常大 所以一个web项目要保证只创建一个SessionFactory 那么在使用hibe ...
随机推荐
- Delphi用QJSON解析JSON格式的数据
本来用superobject来解析JSON已经够用了,可惜这个东东不能在移动端使用,于是找到QJSON来处理. 这是一个国内高手写开源免费的东西,赞一个. 假入数据如下: {"message ...
- Cairo 下载,测试
You need to download the all-in-one bundle available here. You can discover this link yourself by vi ...
- HBase的基本架构及其原理介绍
1.概述:最近,有一些工程师问我有关HBase的基本架构的问题,其实这个问题仅仅说架构是非常简单,但是需要理解.在这里,我觉得可以用HDFS的架构作为借鉴.(其实像Hadoop生态系统中的大部分组建的 ...
- height与line-height
1.网页的所有元素可以分为块元素和行元素.一行文字所在的一个逻辑区域是行元素,其他的元素就都是块元素line-height只针对行元素,height针对其他所有元素 2. width,height对于 ...
- 在CSS中通过@font-face属性来实现网页中嵌入特殊字体。
首先获取要使用字体的三种文件格式.EOT..TTF或.OTF..SVG,确保能在主流浏览器中都能正常显示该字体..EOT,适用于Internet Explorer 4.0+.TTF或.OTF,适用于F ...
- CentOS 7 网络配置工具
之前在CentOS 6下编辑网卡,直接使用setup工具就可以了. 但在新版的CentOS 7里,setuptool已经没有网络编辑组件了,取而代之的是NetworkManager Text User ...
- 关于用photoshop制作海报
最近由于事情比较多,一直忙着各项活动的策划,而我所在的学社联和金山俱乐部都组织了ps的培训,也要求上交一些海报,在积极熟悉ps cs6中. 就昨天做的光棍节脱单海报来讲,稍微运用了笔刷等最基础的工具. ...
- 解决Tomcat7“At least one JAR was scanned for TLDs yet contained no TLDs”问题
解决Tomcat7“At least one JAR was scanned for TLDs yet contained no TLDs”问题 2013-12-05 21:58:00| 分类: t ...
- js one() 方法
js 中有个类似于bind()方法的one() 方法,one()方法的作用是执行一次,为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数. 事例代码如下: <script t ...
- 使用node-inspector对Node.js进行调试
1.通过npm来安装node-inspector npm install -g node-inspector // -g 导入安装路径到环境变量 2.后在命令行中执行“node --debug app ...