在写项目的时候突然想用类成员变量用来存数一些配置信息,恍惚脑袋短路,突然发现在这里有一些疑惑测试一下并记下来。
- 上代码
public class TestClass { private int a= 5;//实例变量
private static int b = 6; //类变量
private static final int c = 6; //常量
public static void main(String[] args) {
// TODO Auto-generated method stub
TestClass testA = new TestClass();
//testA.a = 10;
testA.b = 20;
System.out.println( "testA内部的 a = " + testA.a
+ " b = " + testA.b
+ " c = " + testA.c);
TestClass testB = new TestClass();
testB.a = 15;
testB.b = 30;
System.out.println( "testB内部的 a = " + testB.a
+ " b = " + testB.b
+ " c = " + testB.c);
TestClass testC = new TestClass();
System.out.println( "testC内部的 a = " + testC.a
+ " b = " + testC.b
+ " c = " + testC.c);
}
}
- console结果
>testA内部的 a = 5 b = 20 c = 6
testB内部的 a = 15 b = 30 c = 6
testC内部的 a = 5 b = 30 c = 6
- 结论
** 在 声明类里面方法外的成员变量的中前面的修饰词 `static final` 会有不同的结果**
- **没有修词的** 是实例化后的对象变量(实例变量)不会影响其他该类实例化的对象
- **static** 会升级成为类变量, 所有由该类实例化的对象都会受到影响
- **static final** 会变成类常量,定义初始化后,无法修改