关键字 ststic final

一.static 静态修饰符

使用范围:

static只能用来修饰成员变量和成员方法.
static不能修饰类,因为被static修饰的东西与类相关,随着类的加载而加载.

static不能修饰局部变量,局部变量是在栈中存在的,随着方法的结束而结束.

访问方式:

被static 修饰的方法或变量优先使用 类名.变量名(方法名) 访问

static修饰的成员变量,是静态变量,随着类的加载而加载,优先于对象存在.所有类的对象共享一个静态变量.
static修饰的成员方法是静态方法:静态方法中只可以调用静态方法,但是普通方法可以调用静态方法和普通方法.

注意事项:

1.static修饰的方法可以被继承
2.static方法中没有关键字this

成员变量和静态变量的区别

1、两个变量的生命周期不同

成员变量随着对象的创建而存在,随着对象的被回收而释放

静态变量随着类的加载而存在,随着类的消失而消失

2、调用方式不同

成员变量只能被对象调用

静态变量可以被对象调用,还可以被类名调用

3、别名不同

成员变量也叫实例变量

静态变量称为类变量

4、数据存储位置不同

成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据

静态变量数据存储在方法区的静态区,所以也叫对象的共享数据

二.final 状态修饰符

final:最终的,不能再更改的.当我们觉得某个方法已经非常完整不需要再更改时,或是需要一个不会更改的常量时可以用static修饰.

使用范围:

修饰类,该类不能被继承.
修饰成员变量,该变量此时是一个常量.
		变量是基本数据类型,值不能更改,
		变量是引用类型,则指向的地址不能改,但是堆地址存放的数据可以更改.
修饰成员方法,该方法不能被重写!

注意:

1.final修饰的方法不能被子类方法覆盖,但可以被继承;
2.private不能被子类方法覆盖,private类型的方法默认是final类型的;
3.final不能用于修饰构造方法;

final常与static一起使用:

定义一个公开静态常量:	
public static final int a; 编译时期常量 ,可以定义在飞静态内部类中

public static final Ingeter a =new Ingeter();  运行时期常量 ,不可以定义在非静态内部类中

你可能感兴趣的:(JAVA,java)