在一个类中的静态属性声明并初始化赋值后,在一个静态方法中对这个属性值进行修改,那么在另一个类中,通过第一个类的类名访问这个静态属性的话,它的值是初始化的值,还是静态方法修改后的值呢?比如像下面的代码
class A{
public static int n=1;
public static void m(){
n=2;
}}
public class B{
public static void main(String[] args){
int a=A.n;
}}
那么a的值是1还是2呢?
其实我也是疑问这些事,可是我跑了一下程序,只用类名访问属性的话,确实还是初始值,只有调用一次m方法以后,n的值才变成2.我觉得应该是在static块的话,才会首先编译吧。
追答应该是编译了,但是不调用不执行
当然是1,你又没有调用m()这个方法
你这样写
static{静态属性应该能在静态方法中进行复制,只有加上final修饰以后才不可改变吧?
追答可是你并没有跑静态方法呀!
追问嗯,嗯,谢谢