为何下列运算符求得非真值呢?
          String ls_temp;
  ls_temp=ls_value611+ls_value610;
         //注:ls_value611值为0,ls_value610值为1 
         //求得ls_temp="01";         
  if ( ls_temp=="01")
  {ls_temp="运行"; //为何示执行此语句?
          }
  else if ( ls_temp == "00")
  {ls_temp="停机";}
  else
  {ls_temp="-";
          }
          System.out.println(ls_temp); //输出"-"
===================================================
如果将ls_temp=ls_value611+ls_value610;改为ls_temp="01";
则能够正确输出ls_temp="运行"请高手指点!
也可发邮件给我[email protected]
谢谢!

解决方案 »

  1.   

    改成
    if ( ls_temp.equals("01"))ls_temp 和“01”是两个不同的string
      

  2.   

    hehe~楼主需要回家翻翻书了,这些基本只是有时候是很重要的。
    你直接将ls_temp=ls_value611+ls_value610;改为ls_temp="01"; 的时候ls_temp是引用String 对象 -- "01",所以是==的, 但未改前 他们只是值相同 而并非引用相同。
      

  3.   

    刚从其它语转过来吧,不习惯equals(),还是用==,要注重基础啦!
      

  4.   

    String 的equals  重写了 Object 的equals
      

  5.   

    to linshaojie(枫陵) ( ) 信誉:100 
    --------------------
    ls_temp=ls_value611+ls_value610;只是赋值运算符而已,和==完全不一样。
      

  6.   

    楼上的请看明白再说话。
    我说的是改为ls_temp="01"; 的时候ls_temp是引用String 对象 -- "01",所以是==的.
    没改之前 当然只是赋值运算。
      

  7.   

    我觉得 ls_temp并未指向 "01"
    而当ls_temp="01";
    才指向"01"了
    就是说ls_value611+ls_value610   和"01" 不是一个对象
      

  8.   

    对象间的比较用equals
    基本数据类型间的比较用==
      

  9.   

    equals是比较字符串对象中的字符是不是相等。而==是比较两个对象引用的实例是否相同!
      

  10.   

    public class test001
    {
    public static void main(String args[])
    {
    String a="111",b="222";
    String c=a+b;
    String d="111222";
    if(c=="111222")
    System.out.println("c ==可用");
    if(c.equals("111222"))
    System.out.println("c equals可用");
    if(d=="111222")
    System.out.println("d ==可用");
    if(d.equals("111222"))
    System.out.println("d equals可用");
    }}
    上面代码说明我原来理解错误,linshaojie(枫陵) ( ) 信誉:100的说法是正确的。看来并不是只要是字符串就不能用==,不过还是全用equals()安全!
      

  11.   

    ==  判断两个变量的地址是否相同
    equals 判断两个字符串是否相同