繁体   English   中英

这个公式在Java中如何工作?

[英]How does this formula work in java?

我正在尝试解决这个问题,但是双重打印22是怎么回事? 另外,在for循环后分号到底要做什么? 我将假定最终结果是由于此。

public class termdeposit
{
    int sum;

public termdeposit()
{
    sum = 1;
}

public void test() 
{
int sum = 1;
for (int i = 0; i <= 4; i++); {
    sum = sum + 1;
}
System.out.println ("The result is: " + sum);
System.out.println("Double result: "+ sum+sum);
}
}

分号结束(无用的)循环语句,花括号开始一个不相关的代码块。 您的代码与此等效:

for (int i = 0; i <= 4; i++) {
    // do nothing
}
// run once:
sum = sum + 1;

您的打印语句打印22因为sum+sum在上一个+的上下文中被解释为字符串连接,并且由于sum现在为2 ,所以它打印"2""2"

我假设您在解释程序行为方面遇到了挑战。 这是一个技巧问题。 如您所知,分号非常重要。 这段代码:

for (int i = 0; i <= 4; i++); {
    sum = sum + 1;
}

具有欺骗性。 适当缩进,将类似于:

for (int i = 0; i <= 4; i++)
    ; // do nothing
{
    sum = sum + 1;
}

花括号创建一个代码块(可以在该块中声明局部变量)。 在这种情况下,其效果与sum = sum + 1;完全相同sum = sum + 1; 被写在大括号外面。

您应该能够从中找出其余的行为以及以下事实:在最后一个打印语句中, +运算符从左到右关联。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM