static问题请教

lvhua_2004 2017-08-08 11:25:43
为什么b是1?麻烦哪位解答一下。谢谢
public class StaticTest{
public static Test sTest = new Test();
public static int a=0;
public static int b;

public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(StaticTest.a);
System.out.println(StaticTest.b);
}
}

class Test {
public Test() {
StaticTest.a++;
StaticTest.b++;
}
}
...全文
214 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvhua_2004 2017-08-30
  • 打赏
  • 举报
回复
实际上按照初始化顺序,先执行++操作,因为a,b都是int,所以++操作后都为1; 接着a=0, 所以最终a变成0,而b被没有赋值,所以仍然保持为1
Jcon_ 2017-08-09
  • 打赏
  • 举报
回复
public static int b;实际上在初始化的时候会自动赋值为0,相当于public static int b=0; 所以在++之后就是1了
自由自在_Yu 2017-08-09
  • 打赏
  • 举报
回复
因为这里创建Test对象时 public static Test sTest = new Test(); 执行了Test的构造方法 public Test() { StaticTest.a++; StaticTest.b++; } 所以就是b的初始值为零时,执行了b++
墨笙弘一 2017-08-09
  • 打赏
  • 举报
回复
因为++了,全局初始化默认为0
qq_39781805 2017-08-09
  • 打赏
  • 举报
回复
int类型的默认值是0,b没有初始化,所以默认值为0,然后自加一次,b为1
李德胜1995 2017-08-08
  • 打赏
  • 举报
回复
不是StaticTest.b++吗???

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧