Java代码块详解


Java面向对象
完整代码
Java中有 静态代码块、构造代码块、构造函数、普通代码块
{}这就是代码块
静态代码块
这些代码块的执行顺序有一定的规范 有些面试会问!
static修饰的代码块便是静态代码块 位于类的内部 方法外部
示例

	static {
    
    
		System.out.println("这是静态代码块");
	}

执行:静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造函数。如果一个类中有多个静态代码块,会按照书写顺序依次执行。可以理解为最先被执行。
作用:
一般情况下,如果有些代码需要在项目启动的时候就执行,这时候就需要静态代码块。比如项目启动时需要加载的缓存资源,我们就可以都放入静态代码块中。
构造代码块
不用static修饰的便是构造代码块 位于类的内部 方法外部
执行:创建对象时执行 可以理解在构造方法执行时加入的代码
作用:有多个构造方法时使用
构造函数代码块
构造函数中的代码
普通代码块
方法中的代码
执行顺序
静态代码块>构造代码块>构造函数>普通代码块

示例

public class StaticDemo {
    
    
	//静态变量 类变量
	static public  String name;
	static int a=0; //静态变量 只能由静态方法访问
	//实例变量
	public int age;

	//静态代码块
	static {
    
    
		System.out.println("这是静态代码块");
	}
	
	//构造代码块
	{
    
    
		System.out.println("这是构造代码块");
	}
	
	public StaticDemo(){
    
    
		System.out.println("这是构造方法代码块");
	}
	
	//静态方法
	public static void eat() {
    
    
		System.out.println("这是一个吃饭的静态方法可以使用类名访问、普通代码块");
		a++;
		System.out.println(a);
	}
}

使用

package com.qingsu.personnel;
import static java.lang.System.out;//静态导包

public class StaticDemoTest {
    
    
	
	public static void main(String[] args) {
    
    
		//对静态变量赋值直接使用类名访问 此时静态代码块优先执行
		StaticDemo.name="张三";
		out.println(StaticDemo.name);
		//实例化一个对象 此时构造代码块优先执行
		StaticDemo testDemo = new  StaticDemo();
		//使用类名对对象赋值
		testDemo.name="王五";
		//静态变量归类所以 此时应该打印王五 所以不推荐使用对象名进行访问
		out.println(StaticDemo.name);
		testDemo.age=18;
		//这是一个静态方法 既可以使用类名访问 也可以使用对象名访问
		testDemo.eat();
		StaticDemo.eat();
	}
}

控制台输出
在这里插入图片描述

文章是作者面向对象文章的单独拆分如果存在阅读不连续性请参考下文

Java面向对象
完整代码

Guess you like

Origin blog.csdn.net/Carryi/article/details/119718887