为什么每次乘法后我的变量值都没有更新?

Lil*_*ane 0 java immutability

为什么poc在每次乘法完成后我的变量值都没有更新System.out.println();

public static void main(String[] args) {
    byte poc = 0b0001;

    System.out.println("The value of byte " + poc + " when multiplied by 0010 is: " + poc*0b0010);
    System.out.println("The value of byte " + poc + " when multiplied by 0010 is: " + poc*0b0010);
    System.out.println("The value of byte " + poc + " when multiplied by 0010 is: " + poc*0b0010);
    System.out.println("The value of byte " + poc + " when multiplied by 0010 is: " + poc*0b0010);
    System.out.println("The value of byte " + poc + " when multiplied by 0010 is: " + poc*0b0010);
    System.out.println("The value of byte " + poc + " when multiplied by 0010 is: " + poc*0b0010);
    System.out.println("The value of byte " + poc + " when multiplied by 0010 is: " + poc*0b0010);
    System.out.println("The value of byte " + poc + " when multiplied by 0010 is: " + poc*0b0010);
}
Run Code Online (Sandbox Code Playgroud)

ps这不是功课.我是Java的新手,我正在努力掌握传值的概念.我不明白为什么不是poc每次在println声明中乘以更新的值.例如,在下面的代码变量poc中每次都会更新.

public static void main(String[] args) {
        byte poc = 0b0001;

        System.out.println("The value of byte " + poc + " when incremented by 1 is: " + ++poc);
        System.out.println("The value of byte " + poc + " when incremented by 1 is: " + ++poc);
        System.out.println("The value of byte " + poc + " when incremented by 1 is: " + ++poc);
        System.out.println("The value of byte " + poc + " when incremented by 1 is: " + ++poc);
        System.out.println("The value of byte " + poc + " when incremented by 1 is: " + ++poc);
        System.out.println("The value of byte " + poc + " when incremented by 1 is: " + ++poc);
        System.out.println("The value of byte " + poc + " when incremented by 1 is: " + ++poc);
        System.out.println("The value of byte " + poc + " when incremented by 1 is: " + ++poc);
    }
Run Code Online (Sandbox Code Playgroud)

为什么在第二段代码中更新,而不是在第一段中更新?

And*_*own 5

这真的与传值无关

poc*0b0010不是分配的结果的语句poc*0b0010poc,它只是它返回乘法结果的表达式.

++poc是一个表达式,它递增poc(赋值)并返回赋值的结果.

请注意,您可以使用*=(复合赋值运算符)通过poc*0b0010括号括起来在字符串连接中创建带括号的表达式:

System.out.println("The value of byte " + poc 
  + " when multiplied by 0010 is: " + (poc*=0b0010));
Run Code Online (Sandbox Code Playgroud)

有关算术和赋值的完整教程,请参阅Java教程>赋值,算术和一元运算符.

另见JLS:15.15.1.前缀增量运算符++15.17.1.乘法运算符*

有关传值的信息,请参阅本Java教程中的 "传递原始数据类型参数"部分