JAVA 代码private static final int DEFAULT_SIZE =2 << 24 ;疑问

看到这么行代码
private static final int DEFAULT_SIZE =2 << 24 ;
不大理解,请解疑

这里DEFAULT_SIZE=2 << 24的结果是一个int常量33554432,为什么要用左移运算 而不直接写上常量33554432?

0000 0000 0000 0000 0000 | 0000 0000 0000 0010
左移24,得
0000 0010 0000 0000 0000 | 0000 0000 0000 0000

相当于2的一次方
左移24,得
2的25次方

写成这样就是为了直观的表示2的25次方

开发的时候很少有java程序员会这样写的。在C或者C++中习惯这样。
因为Java程序员对内存管理上根本就不怎么在乎,因为有GC,所以都没人在乎了。

Java中习惯
推荐(Integer.MAX_VALUE)

就好比以秒定义一天一样,写成

int ONE_DAY = 24 * 60 * 60;

int ONE_DAY = 86400;

哪个更易读更易维护?

之所以用左移而不是乘其实是因为效率,左移的话会比乘法快些

这得问那个写这代码的兄弟了,可能他觉得这样比较帅!仅此而已!

sprite311 正解

另外补充一点:因为这是个static final常量,后面表达式的内容在编译期就会被计算出来,在运行期不会重复计算,在运行效率上跟直接使用数字常量是一样的。