j + = j ++在Java中做什么? - java

谁能向我解释这种行为?
首先,我认为答案是511 + 512(如果j + = j ++表示j = j +(j + 1))
我如何证明答案为零?

public class Test
{
    public static void main(String[] args)
    {
        int i = 0;
        int j = 0;
        for (i = 0, j = 0; i < 10; i++) 
        {
            j += j++;
            System.out.println("i = " + i +  " >> " + j);
        }
        System.out.println(j);
    }
}

> java Test
i = 0 >> 0
i = 1 >> 0
i = 2 >> 0
i = 3 >> 0
i = 4 >> 0
i = 5 >> 0
i = 6 >> 0
i = 7 >> 0
i = 8 >> 0
i = 9 >> 0
0

参考方案

因为当您执行a = b + c时,您首先要阅读bc,然后计算值。

另外,j++表示返回j的当前值,然后将其递增1。

在您的情况下,由于您执行j = j + j++,因此您首先阅读j,然后再次阅读j并返回j的值。让我们以第一个迭代为例:

  • 您读j = 0
  • 您再次读取j = 0
  • 您计算j = j + 1
  • 但是,现在您可以计算j = 0 + 0并覆盖该值
  • 因此,在迭代结束时,j的值没有改变。仍然为0。每次迭代都是如此,这就是j的值永远不变的原因。

    在Java中,执行“ ++++++++”表达式,编译器未报告任何错误并且可以正确执行? - java

    我用eclipse编写了这段代码,用war写过,结果为3d。public static void main(String[] args) { double a = 5d + + + + + +-+3d; System.out.println(a); } 参考方案 您的表情可以改写为(5d) + (+ + + + +-+3d) 其中第一个+是应用于两个操作数的…

    谁能解释有关动态或静态语言的C C++ Java - java

    谁能解释C C++ Java有关动态类型或静态类型的语言。我在某处读到C C++和Java都是静态语言。但是我记得关于这些还有其他意见。很混乱。谢谢! 参考方案 还有其他意见吗?毫无疑问,C,C++和Java都是静态类型的语言,而C++和Java具有一些动态类型的功能。还有另一个问题:强类型与弱类型,主要与隐式转换和重载有关。 Web上有许多关于这些问题的深…

    Java和C++共享内存 - java

    我有一段创建共享内存的C++代码。是否可以编写Java代码来读取C++代码创建的内存,除非使用JNI。顺便说一句,我正在使用Windows操作系统。 参考方案 请参见MappedByteBuffer。这是读写共享内存的标准Java类。我经常使用。是的,您可以使用它与使用共享内存以任何语言编写的任何程序进行通信,并且这都是非常标准的Java,没有JNI。

    Java值加变量++ - java

    考虑以下代码int val1 = 3; val1++; int val2 = val1++; System.out.println(val1); System.out.println(val2); Val1值= 5;Val2值= 4;为什么Val1的值是“ 5”?据我了解,应该为4,因为:在第1行,它的赋值为3,在第2行,通过val1 ++加上1,结果val…

    我可以使用JNI在Java代码中引用C++对象吗? - java

    我在任何地方都没有看到(或者也许我很简单,没有看到它),但是有没有办法使用JNI返回c / c ++对象并在Java中使用该对象?例如(非常简单):class simpleClass{ ... private: int intVar; public: int getIntVar(); void setIntVar(int someNum); ... } 在我…