IDEA debug ArrayList构造器参数传递不一致

各位小伙伴在阅读JDK8的代码时,是否遇到过这种情况:

ArrayList构造器中传递的值为50

public static void main(String[] args) {
        ArrayList<String> strings = new ArrayList<>(50);
}

但在debug过程中,显示的是1

img

怎么可能呢。一直是50呀。你是不是在构造方法上打断点了?因为启动类的时候要使用到arrayList这个类,所以他是1,你先再main方法,打一个断点,运行到断点之后,在构造方法中在打一个断点,这个时候才是走到你的代码调用的构造器。

img

运行到这个断点之后在,构造方法上打一个断点

img

没有,传进了4,应该是ArrayList父类构造函数先执行,后面才把50传进去

不只是ArrayList有这个问题,HashMap也有。会先调用put
方法put,但不影响你的put