静态内部类与非静态内部类有何异同?
静态内部类 非静态内部类不需要有指向外部类的引用 必须通过外部类的new关键字引用
可定义普通变量和方法,也可定义静态变量和方法 可定义普通变量和方法,不可定义静态变量和方法
可以调用外部类的静态成员,不能调用外部类的普通成员 可调用外部类的普通成员和静态成员
public static void main(String[] args) { //创建静态内部类实例 StaticInnerClass staticInnerClass = new StaticInnerClass(); //调用静态内部类方法 staticInnerClass.getMessage(); //创建静态内部类实例 StaticCouter.StaticInnerClass staticInnerClass1 = new staticCouter.StaticInnerClass(); //调用静态内部类方法 staticInnerClass1.getMessage(); //创建普通内部类实例 StaticCouter.NormalInnerClass normalInnerClass = new StaticCouter().new NormalInnerClass(); //调用普通内部类方法 normalInnerClass.getMessage(); } 六. static包内导入
这个概念不太好理解,举个例子
public static void main(String[] args) { int[] arra = {1,4,5,7}; Arrays.sort(arra); Arrays.asList(arra); Arrays.fill(arra, 6); }static包导入目的就是去掉重复的Arrays类名调用
通过在顶部引入
import static java.util.Arrays.*
即可把Arrays类中所有的静态变量,方法,内部类等都引入当前类中,调用时直接调用sort(arra),asList(arra),
java5后引入的,不常用,调用类方法时会比较简单,但可读性不好,慎用。
七. 总结static是java中很常用的一个关键字,使用场景也很多,本文主要介绍了它的五种用法,static变量,static方法,static代码块,static内部类,static包内导入,若有不对之处,请批评指正,望共同进步,谢谢!