当前位置:网站首页>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); false
You 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 .
边栏推荐
- 查看rancher中debug端口信息,并做IDEA Remote Jvm Debug
- Why do you always fail in automated tests?
- 【yolov5.yaml解析】
- 【ijkplayer】when i compile file “compile-ffmpeg.sh“ ,it show error “No such file or directory“.
- Linux安装部署LAMP(Apache+MySQL+PHP)
- Mmclassification training custom data
- 只是巧合?苹果 iOS16 的神秘技术竟然与中国企业 5 年前产品一致!
- 多表操作-自关联查询
- MySQL multi table operation
- 【load dataset】
猜你喜欢
[singleshotmultiboxdetector (SSD, single step multi frame target detection)]
Multi table operation - sub query
The evolution of mobile cross platform technology
Use and install RkNN toolkit Lite2 on itop-3568 development board NPU
How to clear floating?
Two minutes will take you to quickly master the project structure, resources, dependencies and localization of flutter
Simple production of wechat applet cloud development authorization login
What is digital existence? Digital transformation starts with digital existence
Hiengine: comparable to the local cloud native memory database engine
Four operations and derivative operations of MATLAB polynomials
随机推荐
codeforces每日5题(均1700)-第五天
【主流Nivida显卡深度学习/强化学习/AI算力汇总】
语义分割实验:Unet网络/MSRC2数据集
Mongodb replica set
图像超分实验:SRCNN/FSRCNN
强化学习-学习笔记3 | 策略学习
MySQL trigger
[yolov3 loss function]
多表操作-子查询
Multi table operation - Auto Association query
Hash tag usage in redis cluster
Video networkState 属性
The evolution of mobile cross platform technology
Design of music box based on assembly language
ACID事务理论
【L1、L2、smooth L1三类损失函数】
多表操作-自关联查询
调查显示传统数据安全工具在60%情况下无法抵御勒索软件攻击
Course design of compilation principle --- formula calculator (a simple calculator with interface developed based on QT)
Is investment and finance suitable for girls? What financial products can girls buy?