能否定义两个字符串s1和s2对象,使得以下结论同时成立:
1. s1.equals(s2) 得到的结果是false
2. s1.hashCode() == s2.hashCode() 得到的结果是true 

解决方案 »

  1.   

    不能否认存在这种情况的可能性
    或者说肯定存在s1、s2满足条件 但是想找出来具体的s1、s2应该是不可能的
      

  2.   

    1、如果两个对象相同,那么它们的hashCode值一定要相同;
    2、如果两个对象的hashCode相同,它们并不一定相同    
    上面说的对象相同指的是用eqauls方法比较。
      

  3.   

    String重写了equals和hashCode,因此,不可能
      

  4.   

    public class and {
    public static void main(String[] args){
    String str1="1";
    String str2;
    str2="2";
    System.out.println(str1.equals(str2));
    str2=str1;
    System.out.println(str1.hashCode()==str2.hashCode());
    }
    }只能是上面的那样,如果是2个打印输出一起执行则不可能,因为你不能要求值相等而且地址还相等,那不就成了一个字符串了吗,所以你只能先通过赋值让值相等,在通过=号让2个地址相等
      

  5.   

    楼上的方法太.....不可能的,本来是可以通过重写他的hashCode 和 equalse 方法来实现的。但是String 是final 类。这两个方法都不能被重写了。
      

  6.   

    这样的字符串太多了。举个例子System.out.println("|_".hashCode());
    System.out.println("{~".hashCode());
            
      

  7.   

    难得有个明白人,呵呵!我的答案更加简单 str1="", str2="\u0000"