本帖最后由 java2000_net 于 2008-08-04 23:25:10 编辑

解决方案 »

  1.   

    是不是编码的原因
    把prouser打出来看看
      

  2.   

    默认的equals()方法只有等两个引用都是引用同一个对象的时候才是true,一般情况下我要使用这个方法就得覆盖了那个Object类的equals()方法。默认情况下:MyClass m = new MyClass();
    MyClass b = m;
    System.out.println(m.equals(b));这时候是ture.
    也就是this==obj;覆盖了这个方法和自定义相等条件一样。比如说有个类Person,有一个name属性,我们可以写自己的相等条件,也就是如果比较的对象和name和当前的对象的name一样的时候就认为这两个对象相等。Person
    {
    String name ;
    public boolean equals(Object obj)
    {
    //判断obj是不是Person对象,如果不是的话就没有比较的意义了。如果你非要比较也是可以的。//然后用this.name和((Person)obj).getName();比如,如果相同就返回true,不相同就返回false
    return this.getName().equals(((Person)obj).getName();)
    }
    }从中看错equals的原理:自定义比较的规则。Object类里的equals()方法只是简单的比较一个是否引用自对一个对象。
      

  3.   

    什么叫把prouser打出来看看?单独打印都ok,我写了另外一个类,equals用法也没有问题,数据库也能够读出prouser,可凑在这里一起就不行了,我就觉得奇怪
      

  4.   

    这个你要判断一下它们的长度,特别是如果数据库用了char的话。char(10),如果是放了五个字符进去,用jdbc取出来的时候长度还是10的,并不是5。
      

  5.   

    那我用trim()方法是否可以把前后空格都去除?
      

  6.   

    如果没有重写equals方法,比较的是不是同一引用,
    重写了的话要看类的具体行为,比如说String类。