Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
使用shift运算符理解java数组初始化_Java_Arrays_Bit Manipulation - Fatal编程技术网

使用shift运算符理解java数组初始化

使用shift运算符理解java数组初始化,java,arrays,bit-manipulation,Java,Arrays,Bit Manipulation,我知道java中任何数组的最大大小都是Integer.maxValue。因为数组是整数索引的。但我知道,我们也可以使用移位运算符初始化数组。我试过了,但它抛出了奇怪的输出 int arr[] = new int[1<<5]; System.out.println(arr.length); arr = new int[1<<10]; System.out.println(arr.length);

我知道java中任何数组的最大大小都是Integer.maxValue。因为数组是整数索引的。但我知道,我们也可以使用移位运算符初始化数组。我试过了,但它抛出了奇怪的输出

        int arr[] = new int[1<<5];
        System.out.println(arr.length);
        arr = new int[1<<10];
        System.out.println(arr.length);
        arr = new int[1<<20];
        System.out.println(arr.length);
        arr = new int[1<<25];
        System.out.println(arr.length);
        arr = new int[1<<40];
        System.out.println(arr.length);
        arr = new int[1<<111];
        System.out.println(arr.length);

因此,如果有任何其他方法可以在适当的大小分配中初始化这样的数组,那么可以通过移动1100次来初始化大小为2^100的数组吗?

您可以看到
System.out.println(1
Integer.MAX\u VALUE
也是可以存储在int数组中的最大值(不仅仅是最大索引).print out
1小修正
1L>>100
只是零,可能意味着
1L所以基本上我们不能创建大于整数max的数组,有没有办法创建大于整数max的数组?@AashishPawar没有办法。顺便问一句,为什么需要它?如果需要某种版本,可以使用
HashMap
y非常大的数组,通过索引不断访问。另外,具有N个元素的int数组将立即在堆中分配
N*4
字节。因此,对于大型数组,您将需要大量RAM
32
1024
1048576
33554432
256
32768
int[] arr = new int[1 << 100];
int[] arr = new int[1L << 100];