您的位置:首页 > 编程语言 > Java开发

Java中静态代码块,普通代码块,构造函数详解

2017-06-12 15:13 85 查看
//执行的优先顺序:静态代码块>mian方法>构造代码块>构造方法。

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

牛客网的一道经典题目:

package go.jacob.day612;

public class Demo3 {
public static Demo3 d1=new Demo3();
{
System.out.println("A");
}
static{
System.out.println("B");
}

public static void main(String[] args) {
Demo3 d2=new Demo3();
}
/*
* 运行结果:
* A
* B
* A
*/
}

package go.jacob.day612;

public class Demo3 {
static{
System.out.println("B");
}
public static Demo3 d1=new Demo3();
{
System.out.println("A");
}

public static void main(String[] args) {
Demo3 d2=new Demo3();
}
/*
* 运行结果:
* B
* A
* A
*/
}


1 普通代码块

package go.jacob.day612;

public class Demo3 {
/*
* 普通代码块:在方法或语句中出现的{}就称为普通代码块。
* 普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行”
*/
public static void main(String[] args) {
{
int x = 3;
System.out.println("1,普通代码块内的变量x=" + x);
}
int x = 1;
System.out.println("主方法内的变量x=" + x);
{
int y = 7;
System.out.println("2,普通代码块内的变量y=" + y);
}
}
/*
* 运行结果
* 1,普通代码块内的变量x=3
* 主方法内的变量x=1
* 2,普通代码块内的变量y=7
*/

}


2.普通构造代码块

package go.jacob.day612;

public class Demo3 {
/*
* 构造代码块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。
* 构造代码块在创建对象时被调用,每次创建对象都会被调用,
* 并且构造代码块的执行次序优先于类构造函数。
*/
{
System.out.println("第一代码块");
}

public Demo3(){
System.out.println("构造方法");
}

{
System.out.println("第二代码块");
}

public static void main(String[] args) {
new Demo3();
new Demo3();
new Demo3();
}
/*
* 运行结果:
* 第一代码块
* 第二代码块
* 构造方法
* 第一代码块
* 第二代码块
* 构造方法
* 第一代码块
* 第二代码块
* 构造方法
*/
}


3.静态代码块

package go.jacob.day612;

public class Demo3 {
/*
* 构造代码块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。
* 构造代码块在创建对象时被调用,每次创建对象都会被调用,
* 并且构造代码块的执行次序优先于类构造函数。
*/
{
System.out.println("普通构造代码块");
}
static{
System.out.println("静态代码块");
}
public Demo3(){
System.out.println("构造方法");
}

public static void main(String[] args) {
System.out.println("Demo3主方法");
new Demo3();
new Demo3();

}
/*
* 运行结果:
* 静态代码块
* Demo3主方法
* 普通构造代码块
* 构造方法
* 普通构造代码块
* 构造方法
*/
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐