第二点: 关于静态代码块和构造代码块.
1, 静态代码块.
作用是: 用于给类进行初始化.- class StaticCode
- {
-
- static//静态代码块,随着类的加载而加载.而且只执行一次.
-
- {
-
- }
-
- }
- class StaticCodeDemo
- {
- public static void main(String[] args)
- {
- System.out.println("Hello World!");
- }
- }
复制代码 2, 构造代码块.
class Animal
{
private String eat;
{//这是构造代码块,作用是给所有对象初始化,存放对象的共性.
System.out.println("我是一只动物");
}
Animal()//这是构造函数,作用是给对应的对象针对性的初始化,存放对象的特性.
{
eat="肉";
}
Animal(String eat)
{
this.eat=eat;
}
public void food()
{
System.out.println("eat:"+eat);
}
}
class StaticCodeDemo
{
public static void main(String[] args)
{
Animal c = new Animal();
c.food();
Animal d = new Animal("草");
d.food();
}
}
输出
我是一只动物
eat:肉
我是一只动物
eat:草
这是我在老师的笔记上自己添加了一点自己比较好理解的话.
至于优先级, 静态代码块只要类一加载, 静态代码块就存在静态区, 而构造代码块, 只要创建了对象就会调用, 构造函数同理, 只是构造代码块是给所有对象初始化,而构造函数是给相对应对象初始化, 所以我的观点是, 按照优先顺序, 应该是 静态代码块>构造代码块=构造函数
如果有那个理解错误, 请大神帮我指出来. |