美文网首页Java开发那些事
Static特别用法-静态导包

Static特别用法-静态导包

作者: Antidote799 | 来源:发表于2017-10-17 17:34 被阅读26次

    关于Java关键字static静态修饰符,大家都很熟悉。

    但具体static作用是什么了?

    1.修饰成员变量和方法  

           在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员或方法,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员或方法,但是有种情况例外,就是该成员是用static声明的,即可引用成员或方法。最基本的有Integer.parseInt(),Float.parseFloat()等等用来把对象转换为所需要的基本数据类型,这样的变量和方法我们又叫做类变量和类方法。

    2.静态代码块

            一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的

           需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用
    比如main方法就必须是静态的 这是程序入口
    两者的区别就是:静态代码块是自动执行的;
    静态方法是被调用的时候才执行的.

    PS: 一个对象的初始化顺序

        执行Parent类的静态代码块 -- >Parent类的非静态代码块执行完毕-- > 接着执行Parent类的构造方法

    3.静态内部类

        需要了解2个概念:

            1)首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。

            2)静态内部类也叫嵌套类,用这个名字给他定义是更加形象的。意思是说内部类和外部类的关系只是层次嵌套关系,所以只是在创建类文件的时候类文件名是如下形式:outer$inner.java,在使用方面完全和两个普通类一样

       作用:

             1)静态内部类的作用:只是为了降低包的深度,方便类的使用,静态内部类适用于包含类当中,但又不依赖与外在的类,不用使用外在类的非静态属性和方法,只是为了方便管理类结构而定义。在创建静态内部类的时候,不需要外部类对象的引用。

                  通俗的讲:比如有A,B两个类,B有点特殊,虽然可以独立存在,但只被A使用。如果把B并入A里,复杂度提高,搞得A违反单一职责。如果B独立,又可能被其他类(比如同一个包下的C)依赖,不符合设计的本意。所以不如将其变成A.B,等于添加个注释,告诉其他类别使用B了,它只跟A玩。

              2)非静态内部类才是真正的内部类:可以自由使用外部类的所有变量和方法


    4.静态导包

        静态导包就是java包的静态导入,用import static代替import静态导入包。

        一般我们导入一个类都用 import com…..ClassName;而静态导入是这样:import static com…..ClassName.*;这里的多了个static,还有就是类名ClassName后面多了个.* ,意思是导入这个类里的静态方法。当然,也可以只导入某个静态方法,只要把 .* 换成静态方法名就行了。然后在这个类中,就可以直接用方法名调用静态方法,而不必用ClassName.方法名 的方式来调用。

         优点:可以简化一些操作,例如打印操作System.out.println(…);就可以将其写入一个静态方法print(…),在使用时直接print(…)就可以了。

    相关文章

      网友评论

        本文标题:Static特别用法-静态导包

        本文链接:https://www.haomeiwen.com/subject/jwwduxtx.html