this的使用、静态代码块与实例代码块
-
this的使用
1)this()指代一个被定义的构造方法 2)只存在于构造方法中 3)它必须是构造方法中的第一条语句,如果不是,会报下面错误: call to this must be first statement in constructor 它必须是构造方法中的第一条语句
class Date { private int year; private int month; private int day; public Date() { this(1999, 1, 1); } public Date(int year,int month,int day) { this.year = year; this.month = month; this.day = day; } public void setYear(int year) { this.year = year; } private int getYear() { return this.year; } public String toString() { return this.year + "年" + this.month + "月" + this.day + "日"; } public void print() { System.out.println(this.getYear()); } } class Test2 { public static void main(String[] args) { Date d1 = new Date(); System.out.println(d1); } }
输出:
-
静态代码块与实例代码块
1.static{ }静态代码块,最先执行,在类加载时就已经执行 2.{ }实例代码块,构造函数方法被调用时执行,可用来检测构造方法是否执行
静态代码块:
public class Test03 { public static void main(String[] args){ System.out.println("main begin"); new Test03(); new Test03("1"); } public Test03(){ System.out.println("无参构造方法"); } public Test03(String date) { System.out.println("有参构造方法"); } //静态代码块 static { System.out.println("静态代码块执行!"); } }
输出:
实例代码块:
public class Test03 { public static void main(String[] args){ System.out.println("main begin"); new Test03(); new Test03("1"); } //实例语句块 { System.out.println("实例语句块执行!"); } public Test03(){ System.out.println("无参构造方法"); } public Test03(String date) { System.out.println("有参构造方法"); } }
输出: