Java 深入理解代码块的使用细节
代码块的定义
代码块是指被一对大括号包含起来的代码段,其中包括了定义变量、方法、循环、分支等语句。
Java中的代码块可以分为以下两种:
实例代码块
实例代码块是定义在类中的非静态代码块,可以用于初始化实例变量。实例代码块会在构造方法执行前执行。
实例代码块的示例代码如下:
public class Demo {
private int num;
{
System.out.println("这是实例代码块");
num = 10;
}
public Demo() {
System.out.println("这是构造方法");
}
}
静态代码块
静态代码块是定义在类中的静态代码块, 用于初始化静态变量。静态代码块在类加载时执行,且只执行一次。
静态代码块的示例代码如下:
public class Demo {
private static int num;
static {
System.out.println("这是静态代码块");
num = 10;
}
public static void main(String[] args) {
System.out.println(num);
}
}
代码块的使用细节
在使用代码块时需要注意以下几点:
代码块执行时间
实例代码块在构造方法执行前执行,而静态代码块在类加载时执行,且只执行一次。
代码块的执行顺序
代码块的执行顺序与代码的编写顺序有关。可以分为以下几种情况:
非静态代码块的执行顺序
如果一个类中同时包含多个实例代码块,则按照编写顺序从上往下执行。
public class Demo {
{
System.out.println("这是实例代码块1");
}
{
System.out.println("这是实例代码块2");
}
public static void main(String[] args) {
new Demo();
}
}
输出结果为:
这是实例代码块1
这是实例代码块2
静态代码块的执行顺序
如果一个类中同时包含多个静态代码块,则按照编写顺序从上往下执行。
public class Demo {
static {
System.out.println("这是静态代码块1");
}
static {
System.out.println("这是静态代码块2");
}
public static void main(String[] args) {
System.out.println("这是main方法");
}
}
输出结果为:
这是静态代码块1
这是静态代码块2
这是main方法
代码块的作用域
代码块中定义的变量只在代码块内有效。
public class Demo {
public static void main(String[] args) {
{
int num = 10;
}
System.out.println(num); // 编译报错:num 无法识别
}
}
示例
示例1
下面是一个实例代码块的示例,该代码块用于初始化对象的实例变量。
public class Rectangle {
private int length;
private int width;
private int area;
{
length = 5;
width = 4;
area = length * width;
}
public Rectangle() {
System.out.println("length: " + length + ", width: " + width + ", area: " + area);
}
public static void main(String[] args) {
new Rectangle();
}
}
输出结果为:
length: 5, width: 4, area: 20
示例2
下面是一个静态代码块的示例,在静态代码块中初始化静态变量。
public class Circle {
private static final double PI;
private int radius;
static {
PI = 3.1415926;
}
public Circle(int radius) {
this.radius = radius;
}
public double getArea() {
return PI * radius * radius;
}
public static void main(String[] args) {
Circle c = new Circle(2);
System.out.println(c.getArea());
}
}
输出结果为:
12.5663704
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java深入理解代码块的使用细节 - Python技术站