java初学者,求大神指点

int i = 0;
int sum;
while(i<100) {
sum =i;
sum+=i;
i++;

}
System.out.println(sum);

这是主方法里面运行的代码,错误信息提示输出行的sum未初始化,我不太懂,为什么,求高手指点

给sum赋值就ok了

赋初值:int sum = 0;

int sum=0;
未进行赋值

java 和 c 是不一样的。int sum ; 这里应该会有一个黄色警告,只需在后面初始化就可以了。int sum = 0;

while循环里不是进行赋初值跟赋值操作了吗

Java在编写方法是变量定义时必须初始化赋初始值。直接定义变量是给个初始值,后者使用时再修改赋值。

int i = 0;
int sum = 0;
while(i<100)
for( sum =i; sum+=i; i++){
System.out.println(sum);
}

Java规定定义局部变量时必须手动赋初始值 ,你的int sum的定义应该是在方法里定义的吧,这样的话它就是局部变量,就的在定义的时候赋初始值,比如int sum = 0;你在while里赋初始值已经晚了,

sum是局部变量吧,如果是全局变量的话就不用赋初值,会有默认值的,但是 局部变量在使用前必须初始化或者赋值

sum =i;你这个不叫初始化,你这个叫赋值,但在java中,八大数据类性在使用的时候有2种情况,
一种是类的
class A{
private int i;
}
这一种在使用的时候不需要初始化,一般是set方法赋值,get方法取值。
另一种是直接在方法里面
public void function(){
int i =0;
}
这个在使用的时候一定要初始化,要给它一个定值,如果你给它一个变量,这应该就直接变为了赋值,并不是初始化。

因为编译器不知道是否一定会执行while循环里的代码,虽然从逻辑上一定会执行的但是编译器不知道,所以,编译器就认为,你定义了一个变量没有初始化,这不符合java语法,所以就报错了。