当前位置:网站首页>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 .
边栏推荐
- Principle and performance analysis of lepton lossless compression
- MySQL stored procedure
- Hash tag usage in redis cluster
- Open3d mesh (surface) coloring
- MySQL installation, Windows version
- POJ-2499 Binary Tree
- 1 plug-in to handle advertisements in web pages
- 跨平台(32bit和64bit)的 printf 格式符 %lld 输出64位的解决方式
- [configuration method of win11 multi-user simultaneous login remote desktop]
- Redirection of redis cluster
猜你喜欢

【主流Nivida显卡深度学习/强化学习/AI算力汇总】

Yolov 5 Target Detection Neural Network - Loss Function Calculation Principle

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

Multi table operation - Auto Association query

强化学习-学习笔记3 | 策略学习

互联网公司实习岗位选择与简易版职业发展规划
![[untitled]](/img/56/6a9a4bcab6503872942fff7a365def.jpg)
[untitled]

查看rancher中debug端口信息,并做IDEA Remote Jvm Debug

The most comprehensive new database in the whole network, multidimensional table platform inventory note, flowus, airtable, seatable, Vig table Vika, flying Book Multidimensional table, heipayun, Zhix

Linux安装部署LAMP(Apache+MySQL+PHP)
随机推荐
Read and understand the rendering mechanism and principle of flutter's three trees
7月华清学习-1
16 channel water lamp experiment based on Proteus (assembly language)
Why learn harmonyos and how to get started quickly?
【load dataset】
强化学习-学习笔记3 | 策略学习
The survey shows that traditional data security tools cannot resist blackmail software attacks in 60% of cases
ACID事务理论
【PyTorch预训练模型修改、增删特定层】
查看rancher中debug端口信息,并做IDEA Remote Jvm Debug
Pytorch linear regression
Video networkstate property
Intern position selection and simplified career development planning in Internet companies
Codeworks 5 questions per day (1700 average) - day 5
Why do you always fail in automated tests?
Swift - enables textview to be highly adaptive
Automated test lifecycle
mysql拆分字符串做条件查询
MySQL splits strings for conditional queries
MySQL multi table operation