zoukankan      html  css  js  c++  java
  • java类的生命周期和this关键字一些理解.......欢迎勘误...........

    稍稍研究了一下java类的生命周期...发出来分享一下........欢迎大家吐槽.......

     

    我所猜测的java类底层的初使化顺序--在一个语言的底层是没有语法这个概念的,只有执行顺序

     

    java类-->静态属性-->静态方法-->隐式类实例(this)-->实例属性-->实例方法-->构造方法

     

    a 这就能解释为什么能在实例方法中调用静态方法,因为此时静态方法已经初使化

    b 同样能解释为什么不能在静态方法中通过this来调用实例方法,因为在静态方法中调用this时,this和实例方法还未初使化;

    c 这同样能够解释为什么在构造方法里面能调用任意的类成员方法,,,因为当调用构造方法时,类的其它成员已经全完初使化完成了..

    d 构造方法中可以调用任意的类成员,反过来则不成立 .构造方法不能直接调用,只能配合new来创建类实例

    附上俺的测试代码:

    public class TestClass 
    {
        private int a = 1;
        private static int b = 1;
        
        public  TestClass()    //构造方法中可以调用任意的类成员
        {
            this.fun();
            this.sFun();    //静态方法属于全体类实例 
            TestClass.sFun();
            System.out.print(this.a);
            System.out.print(this.b);    //静态属性属于全体类实例 
            System.out.print(TestClass.b);
            new TestClass();
        }
        
        private void fun()
        {
            new TestClass().sFun();
            this.sFun();
            
             new TestClass();
            // this.TestClass();    //报错,不能直接调用构造方法
        }
        
        private static void sFun()
        {
            //this.fun();    //静态方法中不能使用this来调用实例方法,只能通过构造方法创建实例来调用
            //TestClass.TestClass();    //报错,不能直接调用构造方法
            new TestClass().fun();
        }
        
        public static void main(String[] args)
        {
        }
    }

     

  • 相关阅读:
    触摸屏单点USB HID设置(老外写的 我看着基本没什么问题)
    USB 字段和包格式(1)
    LPC1343整理
    USB枚举和HID枚举实例(6)
    USB/HID设备报告描述符详解 (3)
    C# 值类型与引用类型(1)
    USB组合设备(5)
    千里之行,始于脚下
    c#中的结构体类型
    sqlmap 学习指南
  • 原文地址:https://www.cnblogs.com/playerlife/p/2632334.html
Copyright © 2011-2022 走看看