您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
【第5章:面向对象基础】_代码块
发布时间:2020-12-13 10:23:04编辑:雪饮阅读()
普通代码块
public class TestJava{
public static void main(String args[]){
{
int x=30;
System.out.println("普通代码块 --> x = "+x);
}
int x=100;
System.out.println("代码块之外 --> x = "+x);
}
}
D:\>javac TestJava.java
D:\>java TestJava
普通代码块 --> x = 30
代码块之外 --> x = 100
构造块
直接在类中编写代码块称为构造块
class Demo{
public Demo(){
System.out.println("2、构造方法");
}
{
//直接在类中编写代码块,称为构造块
System.out.println("1、构造块");
}
}
public class TestJava{
public static void main(String args[]){
new Demo();
new Demo();
new Demo();
}
}
D:\>javac TestJava.java
D:\>java TestJava
1、构造块
2、构造方法
1、构造块
2、构造方法
1、构造块
2、构造方法
会发现构造块每次被实例化一次就调用一次并且其优先于构造方法执行。
静态块
用static修饰的代码块称为静态块,静态块无论实例化多少次都只调用一次
class Demo{
public Demo(){
System.out.println("2、构造方法");
}
static{
System.out.println("1、静态块");
}
}
public class TestJava{
public static void main(String args[]){
new Demo();
new Demo();
new Demo();
}
static{
System.out.println("2、静态块");
}
}
D:\>javac TestJava.java
D:\>java TestJava
2、静态块
1、静态块
2、构造方法
2、构造方法
2、构造方法
可以发现静态块优先于主方法执行,如果是普通类中则静态块优先于构造块执行。
脱离main方法
在前面我们知道java程序至少要有一个主方法,但是基于静态块优先于主方法执行,那么其执行结束时候顺带通过exit语句直接终止了程序的继续执行,则程序就不会继续去寻找该类中的main方法了,所以静态块执行结束后也并不会因为找不到main方法而报错,如:
public class TestJava{
static{
System.out.println("2、静态块");
System.exit(1);
}
}
关键字词:面向对象,代码块