帮助我理解java中这个循环中发生的事情

use*_*113 1 java loops

PrintStream out = System.out;

    int sum = 0;
    for(int i = 0; i<5; i++)
        for(int j=i; j<5; j++)
            sum++;
    out.println(sum);
Run Code Online (Sandbox Code Playgroud)

输出:15.我不知道这是怎么得到的15.我试着在脑海中解决它,我一直得到25.

如果我们忽略第二个for循环,并将sum ++放在第一个for循环中,那么你得到5.但是我们如何从第二个for循环获得15?

PrintStream out = System.out;

    int sum = 0;
    for(int i = 0; i<5; i++)
        for(int j=i; j<5; j++);
            sum++;
    out.println(sum);
Run Code Online (Sandbox Code Playgroud)

输出:1.如果放置会发生什么; 在声明之后.它会停止吗?

ass*_*ias 6

i = 0 => j goes from 0 to 4 => sum = 5  
i = 1 => j goes from 1 to 4 => sum = 5 + 4 = 9  
i = 2 => j goes from 2 to 4 => sum = 9 + 3 = 12  
i = 3 => j goes from 3 to 4 => sum = 12 + 2 = 14  
i = 4 => j goes from 4 to 4 => sum = 14 + 1 = 15 
Run Code Online (Sandbox Code Playgroud)

你的第二个代码片段不能按原样编译.

编辑

现在您的第二个代码段编译:

for(int i = 0; i<5; i++)
    for(int j=i; j<5; j++);
        sum++;
Run Code Online (Sandbox Code Playgroud)

相当于(这就是你应该总是使用大括号的原因):

for(int i = 0; i<5; i++) {
    for(int j=i; j<5; j++) {
    }
}
sum++;
Run Code Online (Sandbox Code Playgroud)

这就解释了为什么输出1.