Java 左移位运算符应用于数组元素,但不修改数组
我期望的输出:Java 左移位运算符应用于数组元素,但不修改数组,java,arrays,Java,Arrays,我期望的输出: 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.prin
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;
}
}
}
[1, 2, 3]
[1, 2, 3]
4
4
Java中的赋值并不完全是这样的。当你写作时
array[0]您很好地执行了更改,但忘记分配输出值,更改:
[1, 2, 3]
[4, 2, 3]
4
16
致:
第一项也是如此,为了进行转换,您必须将其分配回数组,更改:
a.t = a.leftShiftField();
int len=array[0]表达式array[0]
是一个表达式。在运行时
指作为数组组件的变量
在表达式中
array[0] = array[0] << 2;
int len=array[0]我想我的问题可能是一个很好的Java求职面试问题。如果你想修改array[0]
,你需要的操作员是
int len = array[0] << 2;
array[0] = array[0] << 2;
int len = array[0] << 2;