package sample;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
A a = new A();
System.out.println(Arrays.toString(a.array));
a.leftShiftArrayElem();
System.out.println(Arrays.toString(a.array));
System.out.println(a.t);
a.leftShiftField();
System.out.println(a.t);
}
static class A {
byte[] array = new byte[] {
1, 2, 3
};
int t = 4;
int leftShiftArrayElem() {
int len = array[0] << 2;
return len;
}
int leftShiftField() {
int p = t << 2;
return p;
}
}
}
我确定:
-
int len = array[0] << 2;
意思是“修改array[0] and assign the new value to
len`”, -
int p = t << 2;
意思是“修改t
并将新值分配给p
。”
我得到的输出:
[1, 2, 3]
[1, 2, 3]
4
4
我期望的输出:
[1, 2, 3]
[4, 2, 3]
4
16
最佳答案
表达式array[0]
是一个 array access expression .在运行时它
refers to a variable that is a component of an array.
在表达式中
int len = array[0] << 2;
array[0]
评估为数组中元素的值。然后您应用 <<
使用该值和值 2
作为它的操作数。与数组或其元素无关。
关于java - 左移运算符应用于数组元素,但未修改数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27847500/