final
只能赋值1次
final修饰的属性没有默认值(所以要赋上初始值)
代码块执行顺序优先于构造方法
作用域:变量dian﹑方法﹑类
赋值:
1﹑直接赋值
2﹑代码块
3﹑构造方法
ps:不允许通过set方法赋值
static
常量通常使用static final修饰,且常量名大写
执行顺序:先执行static修饰的区域;若均被static修饰则按顺序执行(构造方法最后执行)。
例:
public class MyObject {
public MyObject() {
System.out.println("-----MyObject()-----" + a);
}
{
a = 30;
System.out.println("-----{}-----" + a);
}
static int a = 10;
static {
a = 20;
System.out.println("-----static{}-----" + a);
}
public static void say() {
System.out.println("---------say-------" + a);
}
}
public class TestObject {
public static void main(String[] args) {
MyObject my = new MyObject();
MyObject.say();
}
}
输出:
作用域:类﹑属性﹑方法﹑代码块﹑
作用:当static修饰在成员变量或者方法时,代表着变量或者方法不再是某个具体实例的,而是属于类的;实例具有使用权,但不能占为己有;static属于类,代表着公共的,且只能执行一次。