@frank-shaw
2015-10-29T10:34:53.000000Z
字数 1065
阅读 4487
java.基础知识
作用:控制变量的生命周期;
在程序中,当我们已经使用完 x 后,并且在接下来的代码中,不会再用到x,那么就没必要让x 在内存中占用空间了,这用情况下,可以使用 局部代码块,将x及其所设计到的区域封装为局部代码块,他们在程序执行中顺序不变,只是在执行完成后消失。
class Demo1{
public static void main(String[] args){
//局部代码块
{
int x =0;
system.out.println("存在过x = "+x);
}
···//其他代码部分
}
}
作用:它可以给所有对象进行初始化。
存在于:类中。
当类中的构造方法以重载的形式存在时,并且有共同成员变量或共同的方法时,可以通过构造代码块对其进行初始化;这样可以减少代码的重复!
和构造函数的区别:构造函数是给对应的对象进行针对性的初始化,而构造代码块则是对所有对象进行初始化。
class Baby{
String name;
//构造代码块
{
system.out.sprintln("baby诞生啦~~~");
}
//构造函数1
public Baby(){}
//构造函数2
public Baby(String name){
this.name = name;
}
}
特点:
1. 随着类的加载而执行,而且只执行一次。
2. 优先于主函数执行。
作用:给类进行初始化。
有些时候类不能够创建对象:当类中的方法都被静态化了,并且构造方法被private了,这个时候我们不能再将这个类实例化(创建对象),然而又想让类增加一些属性,就可以使用静态代码块。
class Baby{
String name;
//静态代码块
static{
system.out.sprintln("baby类诞生啦~~~");
}
//构造代码块
{
system.out.sprintln("新baby诞生啦~~~");
}
//构造函数1
public Baby(){}
//构造函数2
public Baby(String name){
this.name = name;
}
}
1.如果考虑到继承的情况,那么执行顺序变成:类初始化阶段,先执行最顶层父类的静态初始化块,依次向下,最后执行当前类静态初始化块;如果能够产生对象,在对象初始化阶段,先执行最顶层父类的初始化块,构造器,依次向下,最后执行当前类初始化块,构造函数。
2.如果有多个同类型的代码块,那么执行顺序是依照代码顺序从上到下。
3.某些类是不需要创建对象的,我们可以通过某些方式强制不允许该类创建对象:将构造函数私有化。