Java笔记:代码块的使用

/*
 * 类的成员之四:代码块(或初始化块)
 * 
 * 1.代码块的作用:用来初始化类、对象
 * 2.代码块如果由修饰的话,只能使用static
 * 3.分类:静态代码块 和 非静态代码块
 * 
 * 
 * 4.静态代码块
 * 		1.内部可以有输出语句
 * 		2.随着类的加载而执行,而且只执行一次
 * 		3.作用:初始化类的信息
 * 		4.如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行
 * 		5.静态代码块的执行要优先于非静态代码快的执行
 * 		6.静态代码快内只能调用静态的属性、静态的方法,不能调用非静态的结构
 * 
 * 
 * 5.非静态代码块
 * 		1.内部可以有输出语句
 * 		2.随着对象的创建而执行
 * 		3.每创建一个对象,就执行一次非静态代码块,且先于构造器执行
 * 		4.作用;可以在创建对象是,对对象的属性等进行初始化。
 * 		5.如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行
 * 		6.非静态代码快内可以调用静态的属性、静态的方法,或非静态的属性、非静态的方法
 * 
 * 
 * 对属性可以赋值的初始化
 * 默认初始化
 * 显示初始化
 * 构造器中初始化
 * 有了对象以后,可以通过"对象.属性" 或 "对象.方法"的方式,进行赋值
 * 在代码块中赋值
 * 
 * 执行的先后顺序1 - 2 / 5 - 3 - 4
 */

public class BlockTest {
    
    
	public static void main(String[] args) {
    
    
		
		String desc = Person.desc;
		
		Person person = new Person();
		Person person2 = new Person();
		System.out.println(person.age);
		System.out.println(person.desc);
	}

}
class Person{
    
    
	
	//属性
	String name;
	int age;
	static String desc = "我是一个人";
	
	//构造器
	public Person() {
    
    
		
	}
	
	public Person(String name,int age) {
    
    
		this.name = name;
		this.age = age;		
	}
	
	//static的代码块
	
	static{
    
    
		System.out.println("hello ,static block");
		desc = "我是一个爱学习的人";
	}
	
	static{
    
    
		System.out.println("hello ,static block - 2");
		
	}
	
	//非static的代码块
	{
    
    
		System.out.println("hello,block");	
		age = 1;
	}
	{
    
    
		System.out.println("hello,block - 2");	
	
	}
	
	
	//方法
	public void eat() {
    
    
		System.out.println("吃饭");
	}
	
	@Override
		public String toString() {
    
    
			// TODO Auto-generated method stub
			return "Person [name= " + name + ", age=" + age + "]";
		}
	
	public static  void info() {
    
    
		System.out.println("我是一个快乐的人!");
	}
}

Guess you like

Origin blog.csdn.net/weixin_44201223/article/details/118386653