新人纠结的小疑点

新人纠结的小问题
public class Lake {
  public static void main(String[] args) {
    int a = 0;
    int b = 0;
    int c = 0;
    int count = 0;
    System.out.println("1~1000内的水仙花数为:");
    for (int i=99; i<1000; i++) {
      a = i/100;
      b = (i-a*100)/10;
      c = (i-a*100-b*10);
      if (i== (a*a*a+b*b*b+c*c*c)) {
        System.out.print(i+"\t");
        count++;
      }
    }
    System.out.println("\n一共有"+count+"个");
  }
}

在这个程序里面 为什么 a b c的初始化变量可以忽略, count就不行啊

count不也是成员变量么
------解决方案--------------------
其实,如果a,b,c,count 都会报未被赋值的错误(如果这些值在未初始化的状态下)

楼主这段代码,其实a,b,c这几个临时变量已经赋值过了
 a = i/100;
 b = (i-a*100)/10;
 c = (i-a*100-b*10);


------解决方案--------------------
只有count在使用的时候还没有赋值
------解决方案--------------------
 a b c count 都是局部变量,不是成员变量, a b c初始值可以忽略,是因为后面直接有赋值语句,而count++,这个是访问后赋值,但是在此之前,count 却没有初始化过。
------解决方案--------------------
用和用是不一样的,abc都是直接赋值,是写操作,前面即使没赋值过,这个操作都没有问题
但count的用法和abc是不一样的,count++实际上隐藏着一个读操作,就你这个例子来说,和count = count+1;相同
报错实际上就是报的这个读操作的时候,没有赋值过
------解决方案--------------------
 a = i/100;
 b = (i-a*100)/10;
 c = (i-a*100-b*10);
这里就是赋值啊,你的count没有直接赋值,是Null,null是不可以自加的