当前位置:网站首页>Instance + source code = see through 128 traps
Instance + source code = see through 128 traps
2022-07-05 12:15:00 【The king of early rising】
Catalog
What is? 128 trap
What is? 128 What about the trap ? as follows :
Integer a1 = 10;
Integer a2 = 10;
System.out.println(a1 == a2); true
Integer b1 = 128;
Integer b2 = 128;
System.out.println(b1 == b2); falseYou can see , The results returned are not two true. Accurately speaking , Compare according to the above form , In the interval
-128 To 127 All the results are true
Why is there this phenomenon ? Let's analyze first :
- Integer Is a wrapper class , Is a class , Reference data type .
- == Compare its address .
Thus we can see that a1 and a2 The same address as ,b1 and b2 Is different .
Source code analysis
Here is Integer An internal code , Some parts are omitted by me , Let's take a few lines to analyze .
private static class IntegerCache {
static final int low = -128;
static final int high;
static final Integer cache[];
static {
// high value may be configured by property
int h = 127;
…………
high = h;
cache = new Integer[(high - low) + 1];
int j = low;
for(int k = 0; k < cache.length; k++)
cache[k] = new Integer(j++);
// range [-128, 127] must be interned (JLS7 5.1.7)
assert IntegerCache.high >= 127;
}
private IntegerCache() {}
}It's not hard to see. , The above code implements , take -127 To 128 The number of is placed in one cache Array , Is already created .
If in this range , It will directly return the address in the array created in advance . So use == To compare is equal .
Not in this range b1 and b2, Will open up new memory space .
Keep early hours , take care , The king of early rising wishes you good luck ——
sorry , I saw through your trap .
边栏推荐
- 【主流Nivida显卡深度学习/强化学习/AI算力汇总】
- Time tools
- Linux安装部署LAMP(Apache+MySQL+PHP)
- Open3d European clustering
- Course design of compilation principle --- formula calculator (a simple calculator with interface developed based on QT)
- 手机 CPU 架构类型了解
- Video networkstate property
- [deploy pytoch project through onnx using tensorrt]
- PXE启动配置及原理
- Semantic segmentation experiment: UNET network /msrc2 dataset
猜你喜欢

ABAP table lookup program

Seven ways to achieve vertical centering

Read and understand the rendering mechanism and principle of flutter's three trees

Matlab imoverlay function (burn binary mask into two-dimensional image)

Splunk configuration 163 mailbox alarm

Select drop-down box realizes three-level linkage of provinces and cities in China

Simply solve the problem that the node in the redis cluster cannot read data (error) moved
Why do you always fail in automated tests?

Course design of compilation principle --- formula calculator (a simple calculator with interface developed based on QT)

mmclassification 训练自定义数据
随机推荐
MySQL storage engine
Halcon template matching actual code (I)
什么是数字化存在?数字化转型要先从数字化存在开始
[yolov3 loss function]
Video networkstate property
【yolov3损失函数】
PXE启动配置及原理
MySQL constraints
Xi IO flow
2022年国内云管平台厂商哪家好?为什么?
GPS數據格式轉換[通俗易懂]
Intern position selection and simplified career development planning in Internet companies
[pytorch pre training model modification, addition and deletion of specific layers]
Get data from the database when using JMeter for database assertion
[calculation of loss in yolov3]
[yolov5.yaml parsing]
Error modulenotfounderror: no module named 'cv2 aruco‘
Codeforces Round #804 (Div. 2)
【TFLite, ONNX, CoreML, TensorRT Export】
codeforces每日5题(均1700)-第五天