突然发现一个问题, 下图:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/37e8b565ae934dc39ef1f1395ee679b7.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/20026ebf0b3e0def22c241512f027a85.png)
a与b和c用 == 号比较时执行结果都为true
b和c用 == 号比较结果为false(这个结果大家都知道原因b与c在堆区地址不同, 结果肯定为false)
但是a和c比较为true, a和b比较也为true, 这到底是为什么呢?
于是我通过编译查看生成的字节码文件, 试图找到答案
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/499f0b67a0cd10b21d3ab91060a902d1.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f4ae26c66823817b02cf7adc49663afb.png)
果不其然在字节码文件里找到了端倪
c与b直接将内存地址压入栈进行比较, a与b比较时b调用了doubleValue函数取出值再与a的值比较
总结
"=="号不一定是比较两个数的地址, 对于不是new出来的要特别小心