Static特别用法-静态导包

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

但具体static作用是什么了?

1.修饰成员变量和方法  

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

2.静态代码块

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

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

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

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

Static特别用法-静态导包_第1张图片

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特别用法-静态导包)