站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题JAVA里面比较两个数的问题

JAVA里面比较两个数的问题

摘要: JAVA里面比较两个数的问题


代码如下:
class Number
{
int i;
}


public class Assignment
{
public static void main(String []args)
{
Number n1=new Number();
Number n2=new Number();
Number n3=new Number();
Number n4=new Number();
n1.i=9;
n2.i=47;
System.out.println("1:n1.i:"+n1.i+",n2.i:"+n2.i);
n1=n2;
System.out.println("2:n2.i:"+n1.i+",n2.i:"+n2.i);
n1.i=17;
System.out.println("3:n1.i:"+n1.i+",n2.i:"+n2.i);
System.out.println(n1==n2);
n3.i=10;
n4.i=10;
System.out.println(n3==n4);
System.out.println(n3.equals(n4));

}
}

为什么执行后面的那条代码是 false?,望各位兄弟们不吝赐教啊!


System.out.println(n3==n4);
System.out.println(n3.equals(n4));
这两句效果一样


public class EqualsMethod
{
public static void main(String []args)
{
Integer n1=new Integer(47);
Integer n2=new Integer(47);
System.out.println(n1.equals(n2));
}

}
但是这个的执行结果是ture?


n1.i=9;
n2.i=47;
System.out.println("1:n1.i:"+n1.i+",n2.i:"+n2.i);
n1=n2; // 现在 n1 和 n2 都指向同一个对象了
System.out.println("2:n2.i:"+n1.i+",n2.i:"+n2.i);
n1.i=17; // n1, n2所指向的那个对象被改变了System.out.println("3:n1.i:"+n1.i+",n2.i:"+n2.i);
System.out.println(n1==n2); // 同一个对象嘛, 当然是true了
n3.i=10;
n4.i=10; // n3 和 n4 虽然具有相同的值, 但它们是两个不同的对象
System.out.println(n3==n4); // 这里false
System.out.println(n3.equals(n4)); // 这里是true

== 比较的是两个变量是否引用同一个对象, 也就是两个对象是否相同
equals()则比较两个对象是否相等...


BTW: 貌似翁恺的Java视频里的例子哦... 讲得还算不错!

不过还是偏基础了点...



如果是包装类和String的话,.equal()比较的是对像的内容,其它类比较的都是引用.


jk88811(jkzqw) 你前面说的我都明白,但是System.out.println(n3.equals(n4));执行的结果是,true呀,所以想不明白,这个例子是<<编程思想>>上的例子,翁恺老师教程里面的例子很多都是从这里面拿出去的,他自己也说他最喜欢的是这本书!
................................................
yc1354() :能说的清楚点吗?依你的说法如下程序:
public class EqualsMethod
{
public static void main(String []args)
{
Integer n1=new Integer(47);
Integer n2=new Integer(47);
System.out.println(n1.equals(n2));
}
}
输入应该是false才对,但是结果是true!


public static void main(String[] args) {
Integer n1=new Integer(47);
Integer n2=new Integer(47);
System.out.println(n1.equals(n2));
System.out.println(n1);
System.out.println(n2);
System.out.println(n1.toString());
System.out.println(n2.toString());
}


结果是
true
47
47
47
47

看看你这句 Integer n1=new Integer(47);为什么一样,不用我多说了吧。。。。
构造函数中的参数是对象的值啊


谢谢兄弟们!!!


↑返回目录
前一篇: 关于多线程和wait()、notity()的问题
后一篇: 如何用java监听Modem读取来电显示号码!!