public class TestStatic {
static final int e;
public static void main(String[] args){
System.out.println("这是static final e="+e);
System.out.println("这是static final e+1="+(e+1));
}
static {e = 4;}能编译通过,也能输出,
static final一块使用修饰变量,不是一旦赋值结果无法改变吗?
static final int e;
public static void main(String[] args){
System.out.println("这是static final e="+e);
System.out.println("这是static final e+1="+(e+1));
}
static {e = 4;}能编译通过,也能输出,
static final一块使用修饰变量,不是一旦赋值结果无法改变吗?
如果
public class TestStatic {
static final Integer e; public static void main(String[] args){ System.out.println("这是static final e="+e); e = new Integer(3); System.out.println("这是static final e+1="+(e+1)); } static {e = 4;}
这样才算改变了e,编译不通过
System.out.println("这是static final e+1="+(e+1));这句话也应该报错的
System.out.println("这是static final e+1="+(e+1));这句话也应该报错的
谁跟你说这句应该报错,e是e,e+1是e+1,你又没把e+1的值赋给e,他为什么要报错?
System.out.println("这是static final e+1="+(e+1));这句话也应该报错的
谁跟你说这句应该报错,e是e,e+1是e+1,你又没把e+1的值赋给e,他为什么要报错?e+1 不是已经改变e的值?