java基础知识复习巩固

记录一些java基础知识点:

Person p = new Person();在内存中做了哪些事情。
    (1)将Person.class文件加载进内存中。
    (2)如果p定义在主方法中,那么,就会在栈空间开辟一个变量空间p。
    (3)在堆内存给对象分配空间。
    (4)对对象中的成员进行默认初始化。
    (5)对对象中的成员进行显示初始化。
    (6)调用构造代码块对对象进行初始化。(如果没有就不执行)
    (7)调用构造方法对对象进行初始化。对象初始化完毕。
    (8)将对象的内存地址赋值给p变量,让p变量指向该对象。

static关键字:
    (1)静态的意思,用来修饰成员变量和成员函数
    (2)静态的特点:
        随着类的加载而加载
        优先于对象存在
        对所有对象共享
        可以被类名直接调用
    (3)静态的注意事项
        A:静态方法只能访问静态成员
            为什么:因为静态的内容是随着类的加载而加载,它是先进内存的。
        B:静态方法中不能使用this,super关键字
        C:主方法是静态的
            public static void main(String[] args)
            public:公共的意思,是最大权限修饰符。
            static:由于jvm调用main方法的时候,没有创建对象。
                   只能通过类名调用。所以,main必须用static修饰。
            void:由于main方法是被jvm调用,不需要返回值。用void修饰。
            main:main是主要的意思,所以jvm采用了这个名字。是程序的入口。

            String[]:字符串数组
            args:数组名

            在运行的时候,通过java命令给args数组赋值。
            格式:java MainTest hello world itcast
    (4)静态变量和成员变量的区别
        A:调用方式
            静态变量也称为类变量,可以直接通过类名调用。也可以通过对象名调用。
            这个变量属于类。
            成员变量也称为实例变量,只能通过对象名调用。这个变量属于对象。
        B:存储位置
            静态变量存储在方法区长中的静态区。
            成员变量存储在堆内存。
        C:生命周期
            静态变量随着类的加载而存在,随着类的消失而消失。生命周期长。
            成员变量随着对象的创建而存在,随着对象的消失而消失。
        D:与对象的相关性
            静态变量是所有对象共享的数据。
            成员变量是每个对象所特有的数据。
    (5)静态的优点和弊端
        优点:
        对对象的共享数据进行单独空间的存储,节省内存,没有必要每个对象都存储一份
        可直接被类名调用
        弊端:
        生命周期过长,随着类的消失而消失
        访问出现权限,即静态虽好但只能访问静态
    (6)什么使用使用静态呢?
        A:当所有对象共享某个数据的时候,就把这个成员变量定义为静态修饰的。
        B:当某个方法没有访问该类中的非静态成员,就可以把这个方法定义为静态修饰。

        静态的生命周期比较长,所以一般不推荐使用。
    (7)静态代码块
        A:它只执行一次,它比main还先执行。
        B:执行顺序
            静态代码块--构造代码块--构造方法

重写和重载的区别?
            重载:在同一类中。方法名相同,参数列表不同。重载可以改变返回类型。
            重写:在不同类中(子父类中)。
                  方法声明相同(返回类型,方法名,参数列表均相同)。
        重写需要注意:
            **子类方法的访问权限要大于等于父类方法的访问权限。
            **静态只能重写静态。但是这种情况一般不会出现。

        构造方法
            **子类的实例化过程
                ***子类创建对象时,会先去创建父类的对象。
                    默认是去调用父类的无参构造方法。
                ***子类构造方法中,第一行默认是super()
                ***为什么子类中第一行会默认有super()
                    因为他继承父类的成员使用,使用前这些成员必须初始化,
                    而他们是父类的成员,所以,必须通过父类进行初始化。
                    所以,会先创建一个父类的对象。
            **当父类没有无参构造方法时
                必须使用this或者super调用其他的构造方法。

多态:
    (1)同一个对象,在程序不同时刻的多种运行状态。举例:动物,狗是狗,狗是动物。水(气态,液态,固态)
    (2)多态前提
        A:存在着继承或者实现关系
        B:有方法的重写
        C:父类(接口)引用指向子类(实现)对象
    (3)多态的好处和弊端:
        好处:多态的存在提高了程序的扩展性和后期可维护性
        弊端:虽然可以预先使用,但是只能访问父类中已有的功能,运行的是后期子类的功能内容。
              不能预先使用子类中定义的特有功能。
    (4)多态中对象调用成员的特点
        Fu f = new Zi();
        
        A:成员变量
            编译看左边,运行看左边
        B:成员方法 
            编译看左边,运行看右边
        C:静态方法
            编译看左边,运行看左边
    (5)多态的思想
        指挥同一批对象做事情。举例:带兵打仗,下课等。

throws和throw的区别
        A:有throws的时候可以没有throw。
           有throw的时候,如果throw抛的异常是Exception体系,那么必须有throws在方法上声明。
        B:throws用于方法的声明上,其后跟的是异常类名,后面可以跟多个异常类,之间用逗号隔开
           throw用于方法体中,其后跟的是一个异常对象名

 

你可能感兴趣的:(java基础知识复习巩固)