首先,如果这是一个非常基本的问题,我很抱歉,我只是想知道以下字符串定义之间的区别
String x= "hello";
String y = new String("hello");
我知道在 java 中 String 是一个类,它既不是原语也不是包装器(如果这是一个误解,请纠正我)。考虑一个 A 类,到目前为止我已经看到了任何类的以下声明。我认为A c;
是有效的并且A a = new A();
也是有效的。我很困惑A a ="xyz";
这就是我们如何声明一个字符串,如上面第一种类型的定义。我确信上面两个定义是完全不同的,就像我说的x==y
它返回 false。我知道 y 是对 String 对象的引用。 x 是什么,它是如何存储在内存中的,有趣的是我发现 x 和 y 都可以访问 String 类的所有方法。
那么其中一种相对于另一种的优势是什么?我可以知道每种的适用性吗?
来自 Joshua Bloch 的《Effective Java》第二版:
String s = new String("stringette");// DON'T DO THIS!
该语句每次执行时都会创建一个新的 String 实例,
并且这些对象创建都不是必要的。论点
String 构造函数(“stringette”)本身就是一个 String 实例,
功能上与创建的所有对象相同
构造函数。如果这种用法发生在循环中或频繁调用的
方法,可以不必要地创建数百万个 String 实例。这
改进版简单如下:
String s = "stringette";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)