Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 左移位运算符应用于数组元素,但不修改数组_Java_Arrays - Fatal编程技术网

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;