永发信息网

java中静态属性和静态方法的问题

答案:4  悬赏:0  手机版
解决时间 2021-03-17 21:13
  • 提问者网友:谁的错
  • 2021-03-17 17:08
java中静态属性和静态方法的问题
最佳答案
  • 五星知识达人网友:零点过十分
  • 2021-03-17 18:23
一般静态变量都是公用的、全局的,程序一启动就会在内存开辟一块空间,存放它们。
静态的不必实例化就能直接使用;
静态方法里不能对非静态的成员变量做操作。
一般静态方法操作静态成员变量或全局变量。
================搞清这些定义==================
A.n
类名.静态变量
你又没调用m()方法,就没有改变n的值
故而结果为1
全部回答
  • 1楼网友:逐風
  • 2021-03-17 21:11
静态属性一旦初始化并赋值之后就不可改变了,所以a的值应该是1.追问静态属性应该能在静态方法中进行复制,只有加上final修饰以后才不可改变吧?追答可是你并没有跑静态方法呀!追问嗯,嗯,谢谢
  • 2楼网友:封刀令
  • 2021-03-17 19:43

当然是1,你又没有调用m()这个方法


你这样写static{
    n=2;
}
结果是2,静态代码块每一次都是先执行
  • 3楼网友:拜訪者
  • 2021-03-17 18:45
肯定是2没问题
原因如下
这个与编译顺序有关,java编译的时候首先是处理静态属性,然后处理静态方法,然后处理静态块
因此首先你定义的n确实初始化为1了
但是由于你这边存在静态方法m修改了n,这个被编译了,因此n变成了2
最后买来方法中使用的时候n就是2了
然后就是为什么要先编译static属性和方法
这是因为这些属性和方法可以直接用类名访问,不需要创建对象,因此不先把他们编译的话就会出现在普通方法中使用static属性或者方法找不到的问题。
这下应该清楚了。追问其实我也是疑问这些事,可是我跑了一下程序,只用类名访问属性的话,确实还是初始值,只有调用一次m方法以后,n的值才变成2.我觉得应该是在static块的话,才会首先编译吧。追答应该是编译了,但是不调用不执行
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯