int sum;和int sum = 0;的区别

想问问为什么sum=0后面的=0如果不写就会运行错误呢
(截图不完整,前面有写#include)

img

sum += i; ===> sum = sum + i; ,如果sum 是不确定的值,sum + i 的值就失去意义了。所以在做加法前,让 sum = 0,有个确定的值,就可以得到我们想要的结果。

一个初始化为0,一个没有初始化,那么初始值是个不确定的值
你for循环中直接是sum += 1,那么如果sum没有初始化为0,而是一个不确定的值,那你觉得这个sum最后的统计值能是你想要的结果吗?

int sum 定义有两种情况

第一种是作为成员变量,在对象创建的时候,sum 作为成员变量会默认初始化为0;

第二种是作为临时变量,sum 可能会是任意值。定义时会在内存寻找一段空间标识sum ,当前内存空间有可能是新的默认值为0,也有可能是之前使用完后未清理,所以默认值会是当前内存已有的值。java为避免变量sum 在使用这段内存空间出现异常,会要求变量sum 显式进行初始化,否则编译出错。

一个是定义了变量,一个是定义了变量且定义了值。

一个初始化为0,一个没有初始化,那么初始值是0