zoukankan      html  css  js  c++  java
  • Java学习--final与static

    final是java的关键字,它所表示的是“这部分是无法修改的”。 

         编译期常量,它在类加载的过程就已经完成了初始化,所以当类加载完成后是不可更改的,编译期可以将它代入到任何用到它的计算式中,也就是说可以在编译期执行计算式。当然对于编译期常量,只能使用基本类型,而且必须要在定义时进行初始化。

        有些变量,我们希望它可以根据对象的不同而表现不同,但同时又不希望它被改变,这个时候我们就可以使用运行期常量。对于运行期常量,它既可是基本数据类型,也可是引用数据类型。基本数据类型不可变的是其内容,而引用数据类型不可变的是其引用,引用所指定的对象内容是可变的。

    父类的final方法是不能被子类所覆盖的,也就是说子类是不能够存在和父类一模一样的方法的。

    在匿名内部类中,为了保持参数的一致性,若所在的方法的形参需要被内部类里面使用时,该形参必须为final

      1、static变量

          static修饰的变量我们称之为静态变量,没有用static修饰的变量称之为实例变量,他们两者的区别是:

          静态变量是随着类加载时被完成初始化的,它在内存中仅有一个,且JVM也只会为它分配一次内存,同时类所有的实例都共享静态变量,可以直接通过类名来访问它。

          但是实例变量则不同,它是伴随着实例的,每创建一个实例就会产生一个实例变量,它与该实例同生共死。

          所以我们一般在这两种情况下使用静态变量:对象之间共享数据、访问方便。

       2、static方法

          static修饰的方法我们称之为静态方法,我们通过类名对其进行直接调用。由于他在类加载的时候就存在了,它不依赖于任何实例,所以static方法必须实现,也就是说他不能是抽象方法abstract。

          Static方法是类中的一种特殊方法,我们只有在真正需要他们的时候才会将方法声明为static。如Math类的所有方法都是静态static的。

        3、static代码块

          被static修饰的代码块,我们称之为静态代码块,静态代码块会随着类的加载一块执行,而且他可以随意放,可以存在于该了的任何地方。

          1、它只能调用static变量。

          2、它只能调用static方法。

          3、不能以任何形式引用this、super。

          4、static变量在定义时必须要进行初始化,且初始化时间要早于非静态变量。

       final和static在一起使用就会发生神奇的化学反应,他们同时使用时即可修饰成员变量,也可修饰成员方法。

         对于成员变量,该变量一旦赋值就不能改变,我们称它为“全局常量”。可以通过类名直接访问。

         对于成员方法,则是不可继承和改变。可以通过类名直接访问。  

  • 相关阅读:
    《Kubernetes权威指南第2版》学习(四)kubernetes基本概念和术语
    《Kubernetes权威指南第2版》学习(三)RC学习
    HTTP 1.1 的HOST 与 虚拟IP(待续)
    HTTP 2 VS HTTP 1.1
    HTTP 的若干问题
    HTTP 协议入门(转载)
    java web 基础 json 和 javaBean转化
    java web基础学习 Forward和Redirect区别
    【雅思】金山词霸-单词学习(41-80)
    【数据库】left join(左关联)、right join(右关联)、inner join(自关联)的区别
  • 原文地址:https://www.cnblogs.com/liutoutou/p/3532568.html
Copyright © 2011-2022 走看看