type
status
date
summary
slug
tags
category
password
URL
icon
起因
今天在做LRU缓存机制这个题的过程中,出现了一个问题,就是发现自己写的逻辑没啥问题,但是就是出错,最后把代码贴到IDEA中debug一下才发现了问题所在。
详情
大家有兴趣的话可以看看以下代码有啥区别
正确代码
异常代码
自己人肉debug一直没发现问题,最后把代码贴到IDEA时,才发现了问题所在。
因为初始化类的传入参数与类的属性名一样,导致在类初始化时,并没有把传入参数赋值给类的属性,导致形参key自己给自己赋值,从而导致逻辑出错。
原因
为什么以下代码不能按照我们所想的去执行呢?
这是因为类或实例的成员变量属于全局变量,而形参属于局部变量,在函数内部,局部变量会覆盖全局变量,所以导致赋值失败。而成员变量没有被显式初始化,会在实例初始化过程中被赋予默认值0。我们在将上面类的初始化代码修改如下
执行后会发现输出结果确实是形参key的值。
- 作者:luxinfeng
- 链接:https://www.luxinfeng.top/article/%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F%E4%B8%8E%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。