在Java中,以下两者之间的区别是什么:
私有最终静态整数=10;
及
私人最终整数=10;
两者都是私有和最终,区别在于静态属性
什么更好?为什么
一般来说,静态表示“与类型本身关联,而不是与该类型的实例关联。”
这意味着您可以引用静态变量,而无需创建该类型的实例,引用该变量的任何代码都引用了完全相同的数据。将其与实例变量进行比较:在这种情况下,类的每个实例都有一个独立版本的变量。例如:
测试x=新测试();
测试y=新测试();
x、 instanceVariable=10;
y、 instanceVariable=20;
System.out.println(x.instanceVariable);
打印出10:y.instanceVariable和x.instanceVariable是分开的,因为x和y指的是不同的对象
您可以通过引用引用静态成员,尽管这样做不好。如果我们这样做了:
测试x=新测试();
测试y=新测试();
x、 静态变量=10;
y、 静态变量=20;
System.out.println(x.staticVariable);
然后打印出20个-只有一个变量,而不是每个实例一个。这样写会更清楚:
测试x=新测试();
测试y=新测试();
Test.staticVariable=10;
Test.staticVariable=20;
System.out.println(Test.staticVariable);
这使得这种行为更加明显。现代IDE通常会建议将第二个列表更改为第三个
没有理由像下面那样使用内联声明初始化值,因为每个实例都有自己的编号,但始终使用相同的值(不可变,并使用文本初始化)。这与所有实例只有一个最终静态变量相同
私人最终整数=10;
因此,如果它不能更改,那么每个实例都有一个副本是没有意义的
但是,如果在构造函数中初始化,则有意义,如下所示:
//声明时没有初始化
私人最终整数;
公共MyClass(int n){
//变量可以在构造函数中赋值,但是
//以后不会修改。
数字=n;
}
现在,对于MyClass的每个实例,我们可以有一个不同但不可变的值number