public String testByte()
  {
    Vector vec = new Vector();
    byte[] a1 = "weiys".getBytes();
    byte[] a2 = "wei".getBytes();
    vec.add(a1);
    vec.add(a2);
    if(vec.contains(a1))
      return "OK";
    else
      return "NO";
  }contains 比较的是object.tostring()的值

解决方案 »

  1.   

    "weiys".getBytes()是个Byte[],也就是一个Array对象,vec的contains方法通过它的equals()方法与vec中的所有元素比较(当然,首先是比较hashcode),而Array继承自Object,它并没有改写equals()方法,所以得不到你要的结果。
    你为什么不直接用String呢?
      

  2.   

    To illyn():你这样做当然可以得到"OK"的结果,因为equals()方法直接通过比较hashcode就得出结果了,根本就是同一个对象的引用嘛。
      

  3.   

    是我说错了,比较的是hashcode,
    我也想问他为什么不直接用String?
      

  4.   

    所有的byte[]都可以变成String吗?比如由图像文件得到的byte[]?
      

  5.   

    public String testByte()
      {
        Vector vec = new Vector();
        byte[] a1 = "weiys".getBytes();
        System.out.println( a1  );
        System.out.println( "weiys".getBytes() );
        System.out.println( "weiys".getBytes() );
        System.out.println( "weiys".getBytes() );
        System.out.println( "weiys".getBytes() );
        byte[] a2 = "wei".getBytes();
        vec.add(a1);
        vec.add(a2);
        if(vec.contains("weiys".getBytes()))
          return "OK";
        else
          return "NO";
      }
    Vector.add(Object obj);加入的是reference,
    而"weiys".getBytes()返回的是一个新的byte[]的reference