踩坑记录
🗒️记一次让自己排查好久的小bug
00 分钟
2021-7-2
2024-6-29
type
status
date
summary
slug
tags
category
password
URL
icon

起因

今天在做LRU缓存机制这个题的过程中,出现了一个问题,就是发现自己写的逻辑没啥问题,但是就是出错,最后把代码贴到IDEA中debug一下才发现了问题所在。

详情

大家有兴趣的话可以看看以下代码有啥区别

正确代码

异常代码

自己人肉debug一直没发现问题,最后把代码贴到IDEA时,才发现了问题所在。
notion image
因为初始化类的传入参数与类的属性名一样,导致在类初始化时,并没有把传入参数赋值给类的属性,导致形参key自己给自己赋值,从而导致逻辑出错。

原因

为什么以下代码不能按照我们所想的去执行呢?
这是因为类或实例的成员变量属于全局变量,而形参属于局部变量,在函数内部,局部变量会覆盖全局变量,所以导致赋值失败。而成员变量没有被显式初始化,会在实例初始化过程中被赋予默认值0。我们在将上面类的初始化代码修改如下
执行后会发现输出结果确实是形参key的值。
 
上一篇
记一次因MySQL编码问题导致的慢查询排查
下一篇
删除文件夹下的指定格式的文件(Java实现)