/*
今天刚预习了,关于面向对象的一些知识,明确了静态代码块,
构造代码块,构造函数执行的顺序!
用小程序总结了一下望大牛们斧正!
*/
class Test
{
//静态代码块
static
{
System.out.println("我是Test类前面的静态代码块");
}
public static void main(String[] args)
{
System.out.println("Hello World!");
Person p1=new Person("黑马",23);//直接用构造函数进行初始化
p1.show();
Person p2=new Person();
p2.show();
System.out.println(Person.name);//静态变量可以成员调用
}
//静态代码块
static
{
System.out.println("我是Test类后面的静态代码块");
}
}
class Person
{
//因为有调用没有参数的构造函数,所以要写下;没写要报错
Person()
{}
//静态代码块
static
{
System.out.println("我是Person的静态代码块");
}
//静态的成员变量
static String name; //静态的成员变量,给所有新建的对象赋初值!
int age;//成员变量
// 构造函数
public Person(String name,int age)
{
this.name=name;
this.age=age;
}
//成员方法
public void show()
{
System.out.println("这是静态的成员变量name="+name+"成员变量age="+age);
}
//构造代码块
{
System.out.println("我是person的构造代码块");
}
}
/*结果
我是Test类前面的静态代码块
我是Test类后面的静态代码块
Hello World!
我是Person的静态代码块
我是person的构造代码块
这是静态的成员变量name=黑马成员变量age=23
我是person的构造代码块
这是静态的成员变量name=黑马成员变量age=0
黑马
请按任意键继续. . .
总结:
静态代码块、构造代码块和构造函数的区别
静态代码块:用于给类初始化,类加载时就会被加载执行,只加载一次。
构造代码块:用于给对象初始化的。只要建立对象该部分就会被执行,且优先于构造函数。
构造函数:给对应对象初始化的,建立对象时,选择相应的构造函数初始化对象。
创建对象时,三者被加载执行顺序:静态代码块--->构造代码块--->构造函数
*/
|
|