String b ="b"为什么是强引用 而String b = new String("b")是弱引用
时间: 2024-02-12 19:16:35 浏览: 125
Java String 和 new String()的比较与区别
5星 · 资源好评率100%
这个问题有些混淆了引用类型的概念。无论是使用 String b = "b" 还是 String b = new String("b"),都是创建了一个字符串对象,并将其赋值给变量 b。但是,它们的引用类型是不同的。
在 Java 中,所有通过 new 操作符创建的对象都是强引用类型的引用。所以,String b = new String("b") 中的 b 是一个强引用类型的引用,它指向了一个通过 new 操作符创建的字符串对象。
而 String b = "b" 中的 b 是一个特殊的强引用类型的引用,这个引用类型称为常量池引用。在 Java 中,所有字符串字面值(如 "b")都会被存储在常量池中,当程序中出现相同的字符串字面值时,它们会共享同一个对象。因此,String b = "b" 中的 b 是一个指向常量池中的字符串对象的强引用类型的常量池引用。
需要注意的是,弱引用和软引用是针对垃圾回收机制而言的,它们都无法阻止对象被垃圾回收器回收。因此,String b = new String("b") 是强引用类型而不是弱引用类型。
阅读全文