字符串初始化差异

srk:

首先道歉,如果这是一个非常基本的问题,我很想知道以下字符串定义之间的区别

String x= "hello";
String y = new String("hello");

我知道在Java中String是一个类,它既不是基元也不是包装器(如果这是一个错误的观念,请纠正我)。考虑一个A类,到目前为止,我已经看到了任何类的以下声明。我认为A c;是有效的,A a = new A();也是有效的。我对此感到困惑,A a ="xyz";因为我们是如何像上面第一种定义类型那样声明String的。我确定以上两个定义绝对不同,就像我说它x==y返回false一样。我知道y是对String对象的引用。x在那里是什么,它如何存储在内存中,有趣的是我发现x和y都可以访问String类的所有方法。

那么一个人相对于另一个人有什么优势呢?我能知道每个人的适用性吗?

约翰·杜(John Doe):

摘自Joshua Bloch的“有效Java”第二版:

String s = new String("stringette");// DON'T DO THIS!

该语句每次执行时都会创建一个新的String实例,并且不需要创建这些对象。String构造函数的参数(“ stringette”)本身是String实例,在功能上与构造函数创建的所有对象相同。如果这种用法发生在循环或频繁调用的方法中,则可以不必要地创建数百万个String实例。改进的版本如下:

String s = "stringette";

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章