java中的常用关键字final static native

一、final关键字

   在java这门编程语言中,final是一个关键字,它可以被用来修饰类,变量以及成员方法。 

  1. final修饰类

    当final关键字修饰一个类,则该类会成为最终类,即该类不能被继承(俗称“断子绝孙类”),但是该类可以有父类。

  2、final修饰成员变量:该成员变量必须在其所在类对象创建之前被初始化(且只能被初始化一次)。

    这句话的意思是: 被final修饰的成员变量,一定要被赋值且只能被赋值一次,且必须是在这个成员变量所在的类对象创建之前被赋值。

    final修饰的成员变量在定义时必须初始化(三种方法:直接赋值、代码块、构造方法中),final修饰的局部变量定义时可以不被初始化,但是使用之前必须完成初始化!

  3、当final关键字修饰了成员方法,则意味着这个方法不能被重写,但是可以被继承(注意,这里final修饰的是方法而不是类)。

 

 

 

二、static关键字

  static可以用来修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。  

  1)static方法

    static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。而对于非静态成员方法,它访问静态成员方法/变量显然是毫无限制的。

  2)static变量

    static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

  static成员变量的初始化顺序按照定义的顺序进行初始化。

  3)static代码块

    static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

  在这里永远要记住一点:静态成员变量虽然独立于对象,但是不代表不可以通过对象去访问,所有的静态方法和静态变量都可以通过对象访问(只要访问权限足够)。

    而且static是不允许用来修饰局部变量

  初始化类(加载类)时,先加载静态块(如果有继承,先加载父类的),然后通过构造器来生成对象(如果有继承,先生成父类对象)

 

  4) static内部类   

  1、静态内部类---访问--->外部类:

  • 直接访问所有静态成员。

      

 

 

 

  2、外部类---访问--->静态内部类:

  • 创建对象再访问。(因为静态内部类中的say方法不是static方法)

        

 

   

    3、外部其他类---访问--->静态内部类:

        

 

 

三、native关键字

   native关键字充当JAVA语言与除JAVA之外的其他语言编写的代码块或库之间的链接,这可能取决于您操作的机器。如果将native关键字应用于一个方法,那么这意味着该方法将通过JNI(JAVA native interface)使用其他语言(如C或C++)编写的本机代码来实现。

posted @ 2023-02-19 15:24  木木林2022  阅读(63)  评论(0)    收藏  举报