Java基础2面向对象:透析类的加载与初始化 对象的初始化 zongjihengfei

1.类的加载

什么时候加载类?
编译期,从自动加载java.lang.*到你import的东西
再就是在代码中找出 自定义类名 加载

加载类的过程? ——只是相当于把这些东西的代码引进一个类
静态变量 ——-> 方法区静态区域
非静态方法 ——-> 方法区非静态区域
静态方法 ——–> 方法区静态区域(需要创建对象调用)
普通初始化块 ——>方法区非静态区域
静态初始化块 ——->方法区静态区域

2.类的初始化

什么时候开始类的初始化?
但凡 “初始化” 都是运行期间开始的

类的初始化干了什么?

 静态的东西允许使用了:  
立即使用静态初始化块一次

3.对象的初始化
什么时候开始?
调用构造器初始化,运行期间才能干这事

干了什么?

默认初始化 –>显示初始化 –> 初始化块初始化 –>构造器初始化

1.输出顺序

class Fu{

Fu(){
System.out.println("new Fu");// 2
}
public class Inner{
public Inner(){
System.out.println("Fu.Inner()");//1   4
}
public void f(){
System.out.println("Fu.f()");
}
}
Inner in=new Inner();
public void getInner(Inner in){
this.in=in;
}

}
public class Zi extends Fu{
    Zi(){

        System.out.println("new Zi");//3
        getInner(new Inner());
    }
  public class Inner extends Fu.Inner{
      public Inner(){
          System.out.println("Zi.Inner()");//5
      }
      public void f(){
            System.out.println("Zi.f()");
        }
  }
    public static void main(String[] args) {
        Fu f=new Zi();

    }
}

2.创建Zi()
Fu静态初始化块 Zi静态初始化块 Fu普通初始化块 Fu构造器 Zi普通初始化块 Zi构造器

如果类A中A型变量a什么时候初始化?

public class Demo {
    static Demo d = new Demo();
    int a=3;
    Demo() {
        System.out.println("这个d已经被初始化了!");
        this.printDemo();
        System.out.println(a);
    }
    public void printDemo(){
        System.out.println("这个方法在初始化类时候调用成功了!");
    }
    static{
//      Demo t4 = new Demo();
    }
    public static void main(String[] args) {
    }
}

d=new Demo()是在初始化完类后进行的,因为其本身是初始化对象,所以所有方法均可以调用

牛刀小试

public class Main21 {

    static{
        System.out.println("1");
    }
    {
        System.out.println("2");
    }
    int a=110;
    static int b=112;
    static Main21 ma=new Main21();
    Main21(){
        System.out.println("3");System.out.println("a="+a+",b="+b);
    }
    static void f(){
        System.out.println("4");
    }
  public static void main(String[] args) {
    f();
}
}

结果
1
2
3
a=110,b=112
4

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值