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

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