类的成员四,代码块(初始化块)
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("吃饭");}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}public static void info() {System.out.println("我是一个快乐的人");}}
如果觉得《java中代码块》对你有帮助,请点赞、收藏,并留下你的观点哦!