static与final的区别

来源:互联网 发布:mac如何保存网页 编辑:程序博客网 时间:2024/05/24 23:12

关于staticfinal的区别

前天面试时被面试官问懵了几个问题,对本来非常熟悉的知识产生了怀疑。总结还是自己基础不扎实,特地整理清楚问题。by:colonel

一、对于类

   1final修饰的类不可以被继承,类内部的方法也不可能被覆盖,java中基本数据类型包装类如String,Int

   2static修饰的类暂且不考虑

二、对于变量

1、对于final:其可以修饰成员变量,可以修饰局部变量。同时其可以修饰基本数据类型变量,可以修饰引用类型变量。

成员变量(可以被继承):(1)基本数据类型:变量值的存储地址与存储的值一旦被赋值均不可再改变,同时声明时可以不赋值,但是在初始化时必须被复制(即在构造函数中赋值)。(2)、引用类型变量:(此时的变量即为对象的引用)此时该引用值(内存地址)不可再改变,但是内存中的内容是可以改变的。

局部变量:(1)基本数据类型:声明时可不必赋值,在使用时赋值即可

2)引用类型变量:修饰引用类型变量与修饰成员变量中的引用类型相同。

2static,只可以修饰成员变量。(1)基本类型变量:存储在永久方法区内存地址不再改变,但是其值可以改变。(2)引用类型变量:同基本类型变量。

子类继承了父类的static变量,并且该变量的存储地址(内存地址)都不改变。


三、对于方法

1、final修饰:子类可以继承该方法,但是不可以重写该方法。也不可以被覆盖。为了保持该方法的完整性与特殊的目的。

2、Static修饰:子类可以继承父类的静态方法,用过父类名称直接调用。子类不可以重写父类中的静态方法。若有一个和父类中方法相同的静态方法,那么这两个方法也毫无关系,他们分别属于自己的类。

0 0