发表于: 2017-09-19 10:28:33

3 810


一、    今天完成的事情

1static关键字

1static关键字的作用。

    static,静态,基本作用可以说是方便在没有创建对象的情况下来进行调用(方法/变量)

    static可以用来修饰类的成员方法、类的成员变量,还可以编写static代码块。

    1static方法

    static方法一般称作静态方法,静态方法不依赖与任何对象就可以进行访问,因此其中没有this,也因此其中不能访问类中非静态成员变量和非静态成员方法。

    此外,尽管没有显式地声明static类的构造器实际上也是静态方法

    2static变量

        静态变量在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。多个static成员变量的初始化顺序按照定义的顺序进行初始化。

    3static代码块

        static块可以置于类中的任何位置以优化程序性能。在类初次被加载的时候,会按照static块的顺序来执行每个static块。

        不使用静态代码块,每次调用方法都需要初始化i

    使用静态代码块,类被加载时初始化一次:

   2static关键字的误区

       1static关键字会改变类中成员的访问权限吗?不会

        2)能通过this访问静态成员变量吗?

        3static能作用于局部变量吗?static不允许用来修饰局部变量

   3)常见的笔试面试题

       1)问这段代码的输出结果?

输出结果:

分析原因:

程序以main作为入口点,而mainSon中,需要先加载Son类,又发现Son类继承自Father类,因此先去加载Father类。在加载Father类的时候发现static块,于是执行static块。Father类加载完成后继续加载Son类,在加载Son类的时候发现static块,于是执行static块。所需的类加载完成后开始执行main方法。在main方法中执行new Son()时先调用父类的构造器,再调用自身构造器。

2)问这段代码的输出结果?

输出结果:

分析原因:

程序以main方法作为入口点开始执行,执行前需要加载main方法所在Son类,发现Son类继承了Father类,需要先加载Father类。加载Father类时执行了static块,加载Son类时执行了static块。执行main方法,创建Son对象,先调用Son的父类构造函数,在生成对象时,先初始化父类的成员变量,发现NewClass类没有被加载,于是加载NewClass类,执行里面的static块,加载完成后实例化NewClass类,而后调用父类的构造函数。完成了父类的初始化,需要完成自身的初始化,实例化NewClass类,最后执行Son的构造器。

4)参考自http://www.cnblogs.com/dolphin0520/p/3799052.html

2Java中的关键字

   Java中共50个关键字

访问控制

private    protected    public

,方法和变量修饰符

abstract    class    extends    final    implements    interface    native    new static    strictfp    synchronized    transient    volatile

程序控制

break    continue    return    do    while    if    else    for    instanceof    switch    case    default

异常处理

try    cathc    throw    throws

包相关

import    package

基本类型

boolean    byte    char    double    float    int    long    short    null    true    false

变量引用

super    this    void

保留字

goto    const

二、    明天计划的事情

三、    遇到的问题

四、    收获



返回列表 返回列表
评论

    分享到