public static void main(String[] args) {
      //代码
      if (var == var) {
          System.out.println("var == var");
      } else {
          System.out.println("var != var");
      }
}
在代码处填入什么能够输出"var != var"?

解决方案 »

  1.   

    这样就输出"var != var"了,创建的两个对象指向的不是同一内存空间也就是不是同一对象public static void main(String[] args) { 
          //代码 
          if (new String("ss") == new String("ss")) { 
              System.out.println("var == var"); 
          } else { 
              System.out.println("var != var"); 
          } 

      

  2.   

    至于1楼的说法...不成立,输出还是var == var
      

  3.   


    这个不对这样的话太简单了~
    lz的意思就是 var = new String("ss") ;//这样的意思!
      

  4.   

    if语句是不能更改的,var其实就是一个对象名。
      

  5.   


    //修改对象的比较方法
    class myvar{
       重写2个 比较方法(内部逻辑 一样的对象返回 false ,-1) 
    }
    myvar var=new myvar();
      

  6.   

    public static void main(String[] args) { 
          //代码 
          if (var == var) { 
              System.out.println("var != var"); 
          } else { 
              System.out.println("var ==var"); 
          } 
      

  7.   

    应该为   double var = Double.NaN;不好意思,没细看!
      

  8.   

    public static final double NaN保持 double 类型的非数字 (NaN) 值的常量。它等于 Double.longBitsToDouble(0x7ff8000000000000L) 返回的值。 public static double longBitsToDouble(long bits)返回对应于给定的位表示形式的 double 值。参数是符合 IEEE 754 的浮点“双精度形式”中的位布局规定的浮点值表示形式。 
    如果参数是 0x7ff0000000000000L,则结果是正无穷大。 如果参数是 0xfff0000000000000L,则结果是负无穷大。 如果参数在 0x7ff0000000000001L 到 0x7fffffffffffffffL 或在 0xfff0000000000001L 到 0xffffffffffffffffL 之间,则结果是 NaN。Java 提供的非 IEEE 754 浮点操作可以在具有不同位模式的同一类型的两个 NaN 值之间进行区分。不同的 NaN 值只能使用 Double.doubleToRawLongBits 方法进行区分。 在其他所有情况下,允许 s、e 和 m 成为可以通过以下参数计算的三个值;  int s = ((bits >> 63) == 0) ? 1 : -1;
     int e = (int)((bits >> 52) & 0x7ffL);
     long m = (e == 0) ?
                     (bits & 0xfffffffffffffL) << 1 :
                     (bits & 0xfffffffffffffL) | 0x10000000000000L;
     浮点结果等于算术表达式 s·m·2e-1075 的值。 
    注意,这个方法不能返回具有与 double 参数完全相同的位模式的 long 类型的 NaN 值。IEEE 754 对静默 NaN 和信号 NaN 这两种 NaN 进行了区分。这两种 NaN 之间的差别在 Java 中通常是不可见的。信号 NaN 上的算术运算将它们转换为带有一个有些不同但非常类似的位模式的静默 NaN。但在某些只复制信号 NaN 的处理器上也执行这种转换。特别是在复制信号 NaN,以便将其返回给调用方法的时候,可能会执行这种转换。因此,longBitsToDouble 可能无法返回具有信号 NaN 位模式的 double 值。因此,对于一些 long 值来说,doubleToRawLongBits(longBitsToDouble(start)) 可能不 等于 start。此外,尽管所有 NaN 位模式,不管是静默 NaN 还是信号 NaN,都必须在上面确定的 NaN 范围内,但特定位模式表示信号 NaN 是与平台有关的。 
    参数:
    bits - 任意 long 整数。
      

  9.   

        public static void main(String[] args)
        {
            EqualsNoEquals var = new EqualsNoEquals();
            //代码 
            if (var == var)
            {
                System.out.println("var != var");
            }
            else
            {
                System.out.println("var ==var");
            }
        }public class EqualsNoEquals
    {
        @Override
        public int hashCode()
        {
            return new Random().nextInt(10);
        }}
      

  10.   

    bits - 任意 long 整数。
    这句是关键
      

  11.   

    11楼已经是正解了。而且Java中应该是不允许操作符重载的吧。
      

  12.   

    public static void main(String[] args) { 
          //代码
          if(true){System.out.println("var != var ");return;} 
          //代码
          //哈哈哈
          if (var == var) {
              System.out.println("var == var");
          } else {
              System.out.println("var != var");
          } 
      

  13.   

    我觉得用1楼的办法就可以实现。后者是用double类型,来进行一次运算就可以。因为double在计算机中存储的时候会用误差。这样两个var值就不是一样的了!
      

  14.   

    double var = Double.NaN; doubule的非精确原理?
      

  15.   

    Double.NaN 表示非数字,不存在的意思,不存在 和 不存在 相比较 自然是false