我有这样的代码串进行比较,平等
class Test{
public static void main(String args[])
{
Boolean a;
Boolean b;
char [] c={'S','t','r','i','n','g'};
a=("String".replace('g','G')=="String".replace('g', 'G'));
b=("String".replace('g','g')=="String".replace('g', 'g'));
System.out.println("---"+a);
System.out.println("---"+b);
System.out.println(c.toString()=="String");
}
外出时的卖出期权 ---假 ---真 假
我没有被Oracle访问JLS文件的地方说。 替换方法: 返回一个新字符串,它是用newChar替换此字符串中出现的所有oldChar。 如果字符oldChar不出现在由此String对象表示的字符序列中,则返回对此String对象的引用。否则,将创建一个新的String对象,该对象表示与由此String对象表示的字符序列相同的字符序列,除了每次出现的oldChar被newChar的出现替换。
当O/P一个是错误的为什么O/P秒是真实的?
JLS文件说到toString方法: 该对象(它已经是一个字符串!)本身返回。 那么为什么不O/P第三是真实的?
任何一个可以请解释一下
在此先感谢 GPAR
使用等于insted的== – Uhla 2014-11-08 17:01:10
我猜这是因为内部使用的字符串池,其中相同的字符串将不会创建两次。在旁注:格式化您的代码。 – keyser 2014-11-08 17:06:29
@乌拉不,这不是说这个问题。 'ToYonos'不,这不是重复的。 – Tom 2014-11-08 17:19:19