Java关键字static和final

static和final关键字,是Java基础中的基础,一定要很好的把他们理解,以便在今后更加灵活的应用。    

一、static关键字

        1、static修饰类,只能修饰内部类,被static修饰的内部类不需要实例一个外部类来调用这个内部类

        不用static修饰内部类的情况,需要实例一个外部类的对象才能调用内部类,并且还需要new一个内部类出来

public class OuterClass {
      public class InnerClass {
          InnerClass() {
              System.out.println("==== 我是一个内部类'InnerClass' ====");
          }
      }
  
      public static void main(String[] args) {
         OuterClass oc = new OuterClass();
         oc.new InnerClass();
     }
}

        用static修饰内部类后,直接new一个外部类调用内部类

public class OuterClass {
      public static class InnerClass {
          InnerClass() {
              System.out.println("==== 我是一个内部类'InnerClass' ====");
          }
      }
  
      public static void main(String[] args) {
         new OuterClass.InnerClass();
     }
}

        2、static修饰静态代码块,代码块最先执行,且只在第一次运行时加载一次,一般用来执行类属性的初始化

                静态代码块的执行顺序是这样的:

                        比如执行new child()时,

                        先执行父类静态代码块,然后执行本类静态代码块,

                        接着父类普通代码块,父类的构造方法,

                        本类的普通代码块,本类的构造方法。

扫描二维码关注公众号,回复: 1374040 查看本文章

        3、static修饰静态方法,在类加载的时候就存在了,静态方法不需要new一个实例,直接类名.方法名就可以调用。

                使用静态方法需要注意:

                        只能调用同类中其他的静态成员,不能访问类中的非静态成员。非静态成员需要实例化对象才能使用。

                        不能以任何方式引用this、super关键字。因为静态方法调用时,它们所引用的对象根本就没有产生。

        4、static修饰变量,只为它分配一次内存,它是类的所属,所有对象都公用这一属性。实质上是全局变量。

                使用静态变量需注意:因为它是属于类的而不是属于对象,不能在方法体内声明静态变量

                可以这样理解:比如姚明和刘翔等等一些运动员从事的运动不同,身高体重不同(每个对象都有不同的属性)

                但他们都是中国人的,如果存储他们的信息,那么国籍这个属性用static修饰比较好,特别方便。

二、final关键字

        1、final修饰类,不能被继承,并且它所有的方法都为隐式的final方法。

        2、final修饰方法,不能被重写。

        3、final修饰变量,目的是阻止它的内容被修改,实质上是一个常量。

                主要还是说他引用的地址不可改变,比如说如果是StringBuilder对象,还是可以通过append来改变值的。

        4、final修饰方法参数,在传参的时候就已经初始化了,在方法中无法改变该值。

        5、final不可以修饰构造方法。

总结

        final和static关键字在平时的运用中很重要,一定要更好的理解,可以找一些例子来加深记忆,尤其在面试的时候问到这个问题时,一定要清楚的阐述,要有一个顺序,就像我写的是从类到变量的一个大体的阐述。

        

                        


猜你喜欢

转载自blog.csdn.net/pengbo6665631/article/details/80277945