请问这个内存图画的对吗?

我看其他的帖子说,堆中的数据是一个对象,方法区中的数据又是一个对象,即String new()很有可能会创建两个对象,一个堆中,一个方法区中,请问是这样的说法吗?
String对象.hashCode()打印出来的是方法区中对象的hash值吗?而==比较符,比较的是栈中对象的地址吗(如果有的话)
如何打印String new在堆中对象的hash值(即value的地址or哈希值)
String str = "hello"我通过断点deBug,发现并没有进入构造器(Force Step Into),直接跳过这行代码了,请问这种方式是怎么创建对象的

看一下这篇文章,介绍的比较详细 https://blog.csdn.net/xl_1803/article/details/114390731
String str = "hello",这种是通过字面量的方式创建的String对象,是虚拟机创建的当然不会进入构造方法