以前碰到的一道笔试题
时间:2008-05-12 17:46:28
来源:论坛整理 作者: 编辑:chinaitzhe
//代码
if (var == var) {
System.out.println("var == var");
} else {
System.out.println("var != var");
}
}
在代码处填入什么能够输出"var != var"?
网友回复:double var=1.0/0;
网友回复:这样就输出"var != var"了,创建的两个对象指向的不是同一内存空间也就是不是同一对象
- Java code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ public static void main(String[] args) { //代码 if (new String("ss") == new String("ss")) { System.out.println("var == var"); } else { System.out.println("var != var"); } }
网友回复:至于1楼的说法...不成立,输出还是var == var
网友回复:int var = 10;
网友回复:
网友回复:关注中。
网友回复:
这个不对。。。这样的话太简单了~
lz的意思就是 var = new String("ss") ;//这样的意思!
网友回复:if语句是不能更改的,var其实就是一个对象名。
网友回复:
//修改对象的比较方法
class myvar{
重写2个 比较方法(内部逻辑 一样的对象返回 false ,-1)
}
myvar var=new myvar();
网友回复:public static void main(String[] args) {
//代码
if (var == var) {
System.out.println("var != var");
} else {
System.out.println("var ==var");
}
}
网友回复:应该为 double var = Double.NaN;不好意思,没细看!
网友回复:
谢谢,不过能不能解释一下这句话的意思?
网友回复:int var =0
网友回复: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 整数。
网友回复:
- Java code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ 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); } }
网友回复:-_-,sorry,看错了,大家无视。。。
网友回复:bits - 任意 long 整数。
这句是要害
网友回复:谢谢!以前确实没留意过这方面。
网友回复:
收回
网友回复:是不是要重载 == 操作符
关键字:以前,碰到,一道,笔试,
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面