Java中String内存地址的问题(为什么String 的变量输出不是地址)

为什么String 的变量输出不是地址?
因为所有的类继承Object类,所以单独输出一个对象的时候,他会调用Object.toString,打印出来的就是一串表达地址的字符串,最后调用的toString。
Java中String内存地址的问题(为什么String 的变量输出不是地址)然而我们的String类里重写了toString(),它返回的是String自己,String是什么呢,String其实就是字符数组(),它内部封装了一个字符数组,所以打印字符串就是打印字符数组,而不是地址
Java中String内存地址的问题(为什么String 的变量输出不是地址)
关于Java中String内存地址的问题。
在创建String类型的变量的时候建议使用直接赋值的方法去创建对象,在多个变量使用同一个字符串的时候,
如果采用new 的方法的话,创建出来的对象是放在栈内存中,每个变量都会开辟出新的内存空间来完成储存,不管字符串是否一致。
如果采用直接赋值的方式的话,字符串会放在常量池当中(常量池是栈内存中的一块特殊区域),不管创建多少个对象,都是引用的常量池的那个字符串,
Java中String内存地址的问题(为什么String 的变量输出不是地址)
两种方法相比较下来,直接赋值更加节省内存空间。

(个人理解观点,如有错误,还请纠正。0.0)