static和final的区别与用途
2018-02-09 22:53
211 查看
static:表示静态或者全局,可以修饰属性、方法、代码块,静态属性和静态方法是属于类的(也可以说是属于类的所有对象的),可以用类名.静态属性/静态方法来访问,用static修饰的代码块是静态代码块,当虚拟机(JVM)加载该类时,就会执行静态代码块。
修饰属性:当static修饰属性时,该属性称为静态变量或者类变量,该变量是在JVM加载类时初始化的;不被static修饰的属性是实例变量,在创建对象时被初始化,实例变量是各个对象独有的。使用一个类的静态变量并不会触发该类的加载。
修饰方法:被static修饰的方法称为类方法或者静态方法,一般通过类名调用。静态方法中不能使用this、super关键字,也不能访问实例变量和实例方法,只能访问静态变量和静态方法。父子类中,静态方法只能被静态方法覆盖,非静态方法只能被非静态方法覆盖。
修饰代码块:被static修饰的代码块被称为静态代码块,和代码块和属性以及方法是同一个等级的成员,可以有多个,位置可以随便放。JVM加载类时会执行这些静态代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。
final:表示常量、最终,final可以修饰变量、方法、类。final修饰的局部变量为常量,一旦赋值不能修改。final修饰的成员变量必须在声明时赋值,或者在构造函数中,或者在代码块中赋初值,一旦赋值不能更改。final方法不能被子类重写。final类不能被继承,没有子类,final类中的方法默认是final的。final不能修饰构造方法。java中的String、Math等类就是final的。
修饰变量:final修饰的局部变量为常量,一旦赋值不能修改。final修饰的成员变量必须在声明时赋值,或者在构造函数中,或者在代码块中赋初值,一旦赋值不能更改。如果final修饰的是对象引用,则引用不可变,引用的对象可以改变。
修饰方法:final修饰的方法不能被子类重写。
修饰类:final修饰的类不能被继承。
-
修饰属性:当static修饰属性时,该属性称为静态变量或者类变量,该变量是在JVM加载类时初始化的;不被static修饰的属性是实例变量,在创建对象时被初始化,实例变量是各个对象独有的。使用一个类的静态变量并不会触发该类的加载。
修饰方法:被static修饰的方法称为类方法或者静态方法,一般通过类名调用。静态方法中不能使用this、super关键字,也不能访问实例变量和实例方法,只能访问静态变量和静态方法。父子类中,静态方法只能被静态方法覆盖,非静态方法只能被非静态方法覆盖。
修饰代码块:被static修饰的代码块被称为静态代码块,和代码块和属性以及方法是同一个等级的成员,可以有多个,位置可以随便放。JVM加载类时会执行这些静态代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。
final:表示常量、最终,final可以修饰变量、方法、类。final修饰的局部变量为常量,一旦赋值不能修改。final修饰的成员变量必须在声明时赋值,或者在构造函数中,或者在代码块中赋初值,一旦赋值不能更改。final方法不能被子类重写。final类不能被继承,没有子类,final类中的方法默认是final的。final不能修饰构造方法。java中的String、Math等类就是final的。
修饰变量:final修饰的局部变量为常量,一旦赋值不能修改。final修饰的成员变量必须在声明时赋值,或者在构造函数中,或者在代码块中赋初值,一旦赋值不能更改。如果final修饰的是对象引用,则引用不可变,引用的对象可以改变。
修饰方法:final修饰的方法不能被子类重写。
修饰类:final修饰的类不能被继承。
-
相关文章推荐
- Java中static 和final的区别
- static,final,static final的区别
- public protected default private static final这几个修饰符的区别
- 浅析Java中的final关键字(static,final和static final的区别)
- final 和 static的区别
- private final static ×× 和private static final xx 两者修饰变量的区别
- Java修饰符:public、protected、private、abstract、static和final区别
- final和static、static final的区别
- Java修饰符abstract,static,final的区别
- c#中 static public void 它们的用途与区别
- Java中static 和final的区别
- public,protected,private,static,final的区别(转载)
- java static final简易区别
- static+final与final区别,静态常量与常量
- @SuppressWarnings("serial")与private static final long serialVersionUID = 1L的区别
- final,static,const在使用上有什么区别?
- java基础学习——final,static,const在使用上有什么区别
- Java 关键字 final 和static 的区别
- java中static、this、super、final用途、用法及实例
- java中final和static的简单的区别