JAVA中我用split读取一串字符返回给一个数组,但是当我用数组判断的时候为什么无法判断,下面是代码
  String str = "boo:and:foo";
    String [] b=str.split(":");
    if(b[0]=="boo"){
     System.out.println("这个相同哦");
    }
按说应该输出一个"这个相同哦",但是为什么没有输出

解决方案 »

  1.   

    你用equals判断试一下
      

  2.   

    "boo".equals(str[0])
      

  3.   

    boo[0]是地址
      

  4.   

    equals
      

  5.   

    对于字符串,你用==去比较的话那么这两个值的不仅要他们的值相同,他们的hashCode也要相同才能为真,但是你现在的b[0]和“boo” 是两个对象,那么他们在内存当中的hashCode肯定是不一样的,所以你只能适用equals去比较b[0]和“boo”是否相等
      

  6.   

    equals
      

  7.   

    ==表示引用是否相同类似于c语言里的指针指向的地址是否相同,而equals是比较值的,一般自己写的类也要重写这个方法,String中已经重写
      

  8.   

    String的 == 和 equals
    == 比较的是引用地址,
    equals 先比较应用地址,然后比较对象值b[0] 是引用地址,"boo"是具体指你比较肯定是不相等的
    用equals就不同了,它可以比较两个对象值(b[0]引用地址指向的值‘boo’)