之前面试的时候做过代码块和构造方法的执行顺序,当时虽然半蒙半猜作对了,但是对这个还不是特别的了解,所以就想看看今天能不能彻底搞懂,即帮助大家、也帮助自己。
简单题
在 Java 中有静态代码块、非静态代码块(构造代码块)、普通代码块,还有静态变量、成员变量,来做道题看看你对这些代码块和变量赋值的执行顺序是否真的了解了?
上代码
public class Address {
private String province;
public Address(String province) {
this.province=province;
System.out.println("-- Address 的构造方法:province="+this.province+"");
}
}
public class User {
private static final Address address1=new Address("guangdong");
private Address address2=new Address("guangxi");
static {
System.out.println("-- User 的静态代码块1--");
}
{
System.out.println("-- User 的非静态代码块1--");
}
public User() {
{
System.out.println("-- User 的普通代码块1--");
}
System.out.println("-- User 的构造方法--");
{
System.out.println("-- User 的普通代码块2--");
}
}
private static final Address address3=new Address("hubei");
private Address address4=new Address("hunan");
{
System.out.println("-- User 的非静态代码块2--");
}
static {
System.out.println("-- User 的静态代码块2--");
}
}
public class StaticCodeTest {
/**
* 静态代码块、非静态代码块、构造方法、静态变量、成员变量的运执行顺序。
*/
public static void main(String[] args) {
new User();
}
}
可以先写下自己的答案哦。
来对答案吧!
-- Address