问题描述
看到这么行代码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次方
解决方案二:
sprite311 正解另外补充一点:因为这是个static final常量,后面表达式的内容在编译期就会被计算出来,在运行期不会重复计算,在运行效率上跟直接使用数字常量是一样的。
解决方案三:
这得问那个写这代码的兄弟了,可能他觉得这样比较帅!仅此而已!
解决方案四:
之所以用左移而不是乘其实是因为效率,左移的话会比乘法快些
解决方案五:
就好比以秒定义一天一样,写成int ONE_DAY = 24 * 60 * 60; 和int ONE_DAY = 86400; 哪个更易读更易维护?
解决方案六:
开发的时候很少有java程序员会这样写的。在C或者C++中习惯这样。因为Java程序员对内存管理上根本就不怎么在乎,因为有GC,所以都没人在乎了。Java中习惯推荐(Integer.MAX_VALUE)
时间: 2024-11-03 01:38:28