idea debug进入HashMap源码时传参不正确?

如图1是我的传参,但进入HashMap源代码时显示的是D:\pac\JDK1.8\jre\bin\instrument.dll,为什么会这样呢,如何显示正确传参

我测试了下面的代码:

分别在这四个位置打了断点以监控程序的运行情况,debug后,进入第一次断点的位置为:

与题主说的情况一致,而没有进入我的第一个断点进行输出,而后F9:

发现还是在put文件,经多次F9之后,可以看出来,其实java的jvm在启动的时候,在底层也自行调用的put方法,将jvm所需要的一些动态库、jar包put到某个map之中,具体是哪个map看不出来。要等到jvm底层将所有东西准备好后,才进行main函数。


jvm准备需要put多少次我就不数了,现在我先把put的断点取消,让程序debug到我的第一个断点处:

这个时候将put方法打上断点,F9发现:

奇怪的key值增加了,它将我的classes编译目录丢进去了,继续F9,和上一步差不多,再再次F9,终于来了:

继续F9,终于到达了我的第二个断点:

继续F9,这次没有put奇怪的东西了:

继续:

最后:

然后程序退出:

综上,jvm在启动的时候会在程序背后隐式地将一些配置啊什么的通过put方法放到某些地方,不用关心,你遇到的情况是正常的也是正确的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-25
这么神奇的嘛?

换成包装类Integer看看

HashMap键值只能用对象的,Integer没毛病
但是你put用的是int,Java会先自动装箱
还是尽量避免这种操作哈追问

还是不行,Integer,String其它的也都不行。
但是第2个put的时候就传参正常了。比如put(1,"a")不行,但put(2,"b")就可以~
还有用社区版的idea一切正常~
想不通为什么会这样

追答

这么认真的吗,

因为这个显示是idea做的,我个人认为可能是这个版本的软件可能是有问题的

鼠标放在key上呢,是不是正常的