public class TestString { public static void main(String[] args) {
String a = "123";
String b = "123";
boolean con = false;
boolean con2 = false;
if(a == b)
{
con = true;
}
if(a.equals(b))
{
con2 = true;
}
System.out.println(con+"\n"+con2);
}}为什么两个都是true;能不能帮我解释一下 == 和equals之间的区别;谢谢了

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【kiver149】截止到2008-07-30 17:20:33的历史汇总数据(不包括此帖):
    发帖的总数量:11                       发帖的总分数:320                      每贴平均分数:29                       
    回帖的总数量:16                       得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:11                       结贴的总分数:320                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=kiver149
      

  2.   

    看一下这个吧,很详细了http://topic.csdn.net/u/20080720/16/5e1e2b39-44c2-48ef-872a-5b00bd8a9826.html
      

  3.   

    只有STRING这个类是这样==也TRUE。因为String a = "123";String b = "123";A和B 都指向字符串常量池中的“123”,也就是同一个对像。就是TRUE你可以试试其他的类。只有equals时才TRUE。
      

  4.   

    嗯楼上的是好贴http://topic.csdn.net/u/20080720/16/5e1e2b39-44c2-48ef-872a-5b00bd8a9826.html
      

  5.   

    "123"这样的字符串,无论你有几个,他们都会指向同一个地址。
    因为String是不允许修改的,所以既然大家内容一样,则无需重复消耗内存。但
    "1"+"23" 实际是3个,"1" 和 "23" , 以及连接之后的"123" 这个"123"和那个直接用的"123"地址不同,但equals是true
      

  6.   

    public class TestString {
    public static void main (String args[]){
    String str1 = new String ("abc");
    String str = "abc";

    if (str == str1){
    System.out.println("true");
    }
    else{
    System.out.println("false");
    }
    }
    }
    这个就是flase了...  解释楼上兄弟们都说了...
      

  7.   

    为什么String a = new String("123"); String b = new String("123");
    这样就生成了两个对象。
    而且我刚才试了下 String a = "1"+"23";String b = "123";
    a == b为true。。这是什么原因