package demos2;
public class Demo01 {
public static void main(String[] args) {
//在代码块外定义的变量
int a = 10;
{
//代码块中可以使用代码块外定义的变量
a = 100;
System.out.println(a);//100
//在代码块中定义的变量,随着代码块的结束被回收,出了代码块就不能使用
int b = 10;
System.out.println(b);
}
//随着代码块的结束,值是修改之后的
System.out.println(a);//100
}
}
package demos2;
public class Demo02 {
public static void main(String[] args) {
// System.out.println(Person.age);
Person per = new Person();
System.out.println(per.name);
Person per2 = new Person("张三");
System.out.println(per2.name);
}
}
class Person{
String name;
static int age;
public Person(){
System.out.println("空参构造方法执行了");//2
}
public Person(String name){
this.name = name;
System.out.println("有参构造方法执行了");//4
}
//在创建对象时,执行构造代码块,在构造方法之前执行
{
//可以给属性初始化
name = "李四";
System.out.println("构造代码块执行了");//1 3
//可以将有参空参相同内容进行抽取
System.out.println("一个对象诞生了");
}
}
package demos2;
public class Demo04 {
static{
System.out.println("Demo04的静态代码块执行了");//1
}
{
System.out.println("Demo04的构造代码块执行了");
}
public static void main(String[] args) {
System.out.println("main方法执行了");//2
A a = new A();
A a2 = new A("张三");
}
}
class A{ String name;
public A(){
System.out.println("A类的空参构造方法执行了");//5
}
public A(String name){
System.out.println("A类的有参构造方法执行了");//7
}
{
System.out.println("A类的构造代码块执行了");//4 6
}
static{
System.out.println("A类的静态代码块执行了");//3
}
}