String str;if (str == null)
if (str.compareTo("temp") == 0)== 是比较地址

解决方案 »

  1.   

    一般不用==判断字符串。
    String a = "hello";
    String b = "hello";
    String c = a;
    a.equals(b) //true
    a.equals(c) //true
    c.equals(b) //true
    a == b //false
    a == c //true
    c == b //false
    下面三个比较有实际意义吗?
      

  2.   

    compareTo、equals,那么何时该用== .. 建议先看看书吧...
    compareTo 是比较两个字符串的大小的...
    equals 不是String特有的,是任何一个java类都有的方法,它唯一的用处就是比较两个类是否逻辑相等...
    == 是比较地址的,没什么实际应用意义,除非是 基本类型的比较 ------------------------------------------------------
               我们还年轻牛奶会有的奶牛也会有的 
                 可天天在 csdn 混这些会有吗 ??
      

  3.   

    对于楼上的例子,
    a == b 
    a == c 
    c == b
    都为true ..但只是因为String类特殊 :)
     ------------------------------------------------------
               我们还年轻牛奶会有的奶牛也会有的 
                 可天天在 csdn 混这些会有吗 ??
      

  4.   

    String 的对象是一个固定的内存地址由java虚拟机分配,如果你想用==来判断两个String内容相同是错误的,因为他们被封装在不同的对象里面而对象存放的内存地址不同!如果你自己写一个class用来判断里面的内容是否相同,你可以自己复写equals方法,这样就明白你的问题也学会了很多东西,看<java编程思想>,对这个问题有深入的讨论.
      

  5.   

    不过String是特殊类 !!!
    String a = "a";
    String b = "a";
    String c = new String("a");此时a==b 为true ,a==c 为false ;
    a==c为false很好理解,因为c 是 new 出来的,开辟了一个新内存地址,来存储"a"
    a==b为true .因为在执行 b="a"的时候,系统会自动寻找内存,找到已经存在的"a"后,把这个地址就赋给了b了,于是b和a就指向了同一个地址... 
     ------------------------------------------------------
               我们还年轻牛奶会有的奶牛也会有的 
                 可天天在 csdn 混这些会有吗 ??