java中代码块

类的成员四,代码块(初始化块)

  • 1.代码块的作用:用来初始化类或者对象

  • 2.代码块如果有修饰的话只能有static

  • 3.分类:静态代码块 vs 非静态代码块

  • 4.静态代码块
    ①内部可以有输出语句
    ②随着类的加载而执行,而且只能执行一次
    ③作用:初始化类的一些属性
    ④如果一个类中定义了多个静态代码块,则按照声明顺序进行执行
    ⑤静态代码块要优先于非静态代码块的执行
    ⑥静态代码块内只能调用静态的属性、静态的方法、不能调用非静态的结构

  • 5.非静态代码块
    ①内部可以有输出语句
    ②随着对象的创建而执行
    ③每创建一个对象就执行一次代码块
    ④作用:可以在创建对象时候对对象的属性进行初始化
    ⑤如果一个类中定义了多个非静态代码块,则按照声明顺序进行执行
    ⑥非静态代码内部可以调用静态的属性、静态的方法、能调用非静态的结构

package com.atguigu.java2;


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

class Person{
	
	//属性
	String name;
	int age;
	static String desc = "我是一个人";
	
	
	//构造器
	public Person() {
	
	}

	public Person(String name, int age) {

		this.name = name;
		this.age = age;
	}
	
	
	//静态代码块
	static{
		System.out.println("hello,static block-1");
		desc = "我是一个爱学习的人";
	}
	
	static{
		System.out.println("hello,static block-2");
		desc = "我是一个爱学习的人";
	}
	
	
	//非静态代码块
	{
		System.out.println("hello,block-1");
		age = 1;
	}
	
	{
		System.out.println("hello,block-2");
		age = 1;
	}
	//方法
	public void eat() {
		System.out.println("吃饭");
	}

	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
	
	public static void info() {
		System.out.println("我是一个快乐的人");
	}
	
	
}


相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页