012Java static和final

来源:互联网 发布:数据英文单词 编辑:程序博客网 时间:2024/05/17 02:53

static和final

1.1static修饰的成员变量:static修饰的成员变量,不是对象的数据结构,而是类的变量,一般通过类名来调用静态成员,成员变量存储在堆中,而静态成员存储在方法区中,一个静态成员变量在一个类中只有一份        

main方法声明

  

  内存结构        

         

由上面三图的, 当创建c1后numOfCats加1,当创建 c2后,由于numOfCats只有一份,因而在此基础上由加一,numOfCats值为2

1.2通常方法涉及到对象的调用时,又有该对象隐式的引用(this)传递给方法,如图下:


而static修饰的方法没有隐式的this调用,因为static修饰的方法不涉及具体对象的调用,因此也不能访问非静态成员,(因为没有this)如图下:


1.3static块

static块在类加载时,被执行一次,仅且执行一次,用于加载静态资源如图下:


运行结果为:Load Foo.class

                     Foo()

以上结果为静态块在类创建之前已经被运行

2final关键字

2.1 final修饰变量:指不可以改变的变量 ,求有如下规则

final修饰的成员变量:必须声明的同时进行初始化或者通过构造函数进行初始化

final修饰的局部变量:在使用在前初始化就行了


由上图得,no被final修饰,不可以被改变,而不可以被重新赋值。

2.2final修饰的方法

final修饰的方法不可以被重写,用于钢制子类调用新方法时,造成的重写。

2.3final修饰的类不可以继承,用于防止子类继承父

2.4static final 常量

static final修饰的成员变量被称为常量,必须声明的同时进行初始化,常量在编译器被替换,如图下:


                                                

        

0 0
原创粉丝点击