Point p1=new Point(4,4);
Point p2=new Point(4,4);
if(p1==p2) //false
if(p2.equals(p1)) //true
Point p3=p2;
if(p3==p2) //true
这里涉及的概念原理麻烦讲解下
楼主的一系列问题说明楼主要抱着Java的书看上3天。
这么学快
抱书看一天了
集中问题问下有点疑惑的== 判断的是内存地址,只要指向了同一个对象,那么就相等,否则就不相等
equals 是类自己实现的判断是否相等的关系。
也可以这么认为,== 是物理相等,而equals是逻辑相等对象名代表了对象在内存中的首地址,那么当进行==比较时就是比较看两个对象是否代表了同一个内存地址。equals比较两个对象包含的内容是否相等这个东西....您接受了就好...多找几个程序跑跑,自然就能接受这个残酷的事实了Point p1=new Point(4,4);
Point p2=new Point(4,4);
java中出现关键字NEW便会生成一个新的对象
if(p1==p2) //false
== 是判断两个引用是否指向同一个对象
if(p2.equals(p1)) //true
equals是判断两个对象是否相等
Point p3=p2;
创建一个新的引用指向p2引用
if(p3==p2) //true
菜鸟拙见,高手指点
就是这样[code=java]
Point p1=new Point(4,4);
Point p2=new Point(4,4);
if(p1==p2) //false
//p1 , p2是对象引用.这是两个不同的对象 所以他们的引用在内存中也不同.p1 p2 分别指向两个对象
if(p2.equals(p1)) //true
// equal是比较 两个引用所指向的对象内容是否相同, 显然是相同的. 数据挖掘研究院
Point p3=p2;
//把p2 的值赋给p3.. p2跟p3就指向同一个对象了. 指向同一个对象的引用当然是一样的. 就这样.
if(p3==p2) //true
[/code]
很清楚了拉,,"=="这是判断两个对引用的地址一不一样,也就是说是不是指向同一个对象的地址.
"="这是赋值操作符
觉得是正解P1和P2所引用的是两个不同的对象,在内存中的引用也存在差异。
而P3和P4是同一个对象,所以相同。==只是比较引用
equal方法在Object中与==的作用相同
但是所有的类都继承Object,所以许多类默认的equal方法的效果和==一样
但是一部分类对该方法进行了覆盖,包括Point,此外还有String、Integal等了解一下java变量在内存的分配情况Create By Any-Extract(WL-AE)