- 代码块 :使用{} 括起来的一段代码块,根据不同的位置可以分为普通代码块、构造块、静态代码块、静态代码块
1.1 普通代码块:直接定义在方法中的代码块
1.2 构造块:直接在类中编写的代码块—–优先于构造方法执行
1.3 静态代码块:用static 关键字声明的代码块(主方法中的静态块最先执行)
1.4 同步代码块——待续
1.5 执行的顺序—– 主方法中的静态代码块(一次并且优先于主方法运行)—类中的静态代码块(一次)—-构造块(多次)—构造函数(多次)
1.6 一个有趣的例子:
class NewDemo
{
static {
System.out.println("Hello,World");-----没有主方法运行,JDK7以后都不可以
System.exit(1);
}
}
这个的编译时没有错的 ,但是运行时有错,运行结果如下:
class NewDemo
{
public static void main(String args[]){
System.out.println("主函数的代码块");
}
static {
System.out.println("主方法中的静态块");
}
}
运行的结果为:
class NewDemo
{
public static void main(String args[]){
System.out.println("主函数的代码块");
}
static {
System.out.println("主方法中的静态块");------从这里可以看出 静态块里的内容优先于主方法运行
}
}
运行的结果为:
构造方法私有化的目的—-单态设计模式
构造方法的私有化 就是为了只产生一个对象——-这就是常用的单态设计模式
1.1 构造方法私有化之后就只能通过内部取得实例化 —-问题转换为 取得内部实例化的对象
1.2 内部实现了实例化之后如何取得?—-只有实例化以后我才可以调用类中的属性和方法
1.3 要想实现不实例化之前就取得 类里面的方法或者属性—–使用静态方法
1.4 为了实现属性的封装性 —-使用静态方法来获取静态属性