美文网首页
Java中static和final的区别

Java中static和final的区别

作者: Bount林 | 来源:发表于2019-04-22 10:50 被阅读0次

1.final可以修饰变量、方法及类:
final修饰的类,不能被继承
final修饰的方法,不能被重写
final修饰的变量,不能被修改

  1. static 关键字
    1、static方法:
      1、只能调用其他的static方法
      2、只能使用static变量
      3、不能以任何方式引用this或者super关键字
    (因为静态方法在编译时,最先被加载,所以有他的优势 以及 一定的局限性)
    static变量

按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是:对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。

static方法

静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法 (就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为实例成员与特定的对关联!这个需要去理解,想明白其中的道理,不是记忆!!!

因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。
static final和final static没什么区别,一般static写在前面。
static修饰的属性强调它们只有一个,final修饰的属性表明是一个常数(创建后不能被修改)。static final修饰的属性表示一旦给值,就不可修改,并且可以通过类名访问。
static final也可以修饰方法,表示该方法不能重写,可以在不new对象的情况下调用。

相关文章

网友评论

      本文标题:Java中static和final的区别

      本文链接:https://www.haomeiwen.com/subject/txaegqtx.html