String str1=new String("1111");
String str2=new String("1111");
System.err.println(str1==str2);
System.out.println(str1.equals(str2));在MAIN函数里面 正常结果是 先false 然后true  大部分情况是这样的  可是有时候在 控制台中 先打印出 true 在打印出false 结果没有错 但怎么有时候会出现这种情况啊  难道我的ECLIPSE有问题??        

解决方案 »

  1.   

    两个输出都用System.err 与 System.out 中的一个的话应该是先false后true
    但分别用System.err与System.out 顺序就是不确定的
    System.err是标准错误流System.out是标准输出流,一般把它们都定向到控制台上,
    但可能是并发执行的.
      

  2.   

    字符串不能用==,==是用于比较hashcode了
      

  3.   


    == 比较的是两个对象引用的地址(这个对非数值型的而言是地址,数值型的比较的是值)equals 比较的是值 两个string 是两个不同的对象  存放在heap中
    地址不同  所以  false后面的是比较的值 所以   true