下面是介绍对象的引用,实体的,文章有个例子,但是我看不懂,希望高手指点其中有 p1==p2  p1=p2  对象也可以比较?也可以赋值??
class Point
   { int  x,y;
     Point( int  a, int b)
         {  x=a;  y=b;}
     }
 public class A
     { public static void main(String args[])
          {  Point  p1, p2;
             p1=new  Point(12,16);
             p2=new  Point(6,18);
             System.out.println(p1==p2);
              p1=p2;
             System.out.println(p1==p2);
           }
      }   
结果是:false false

解决方案 »

  1.   

    正确结果应该是
    false 内存地址不一样。
    true  内存地址一样了!
      

  2.   

    对象比较的是内存所指向的地址P1=P2是指他们都指向P2这个对象的地址结果应该是
    false
    true
      

  3.   

    同意楼上的,正确结果一定是 false true sal
      

  4.   

    ==是判断内存地址是否相同的,楼主可以自己执行下自己的例子,呵呵,结果肯定是false,true
      

  5.   

    用构造方法(Point  p1, p2;p1=new  Point(12,16);p2=new  Point(6,18);)实例化出两个对象--p1,p2,他们两者在内存中的地址是不同的。"=="比较的是对象或变量的内存地址。所以为第一个显示为false;之后又把p2对象中的首地址-->p1在内存的首地址(比如Ox300),所以第二个打印显示出true;
      

  6.   

    p1 = p2 将对p2实例的引用赋值给p1    这样p1与p2具有相同的引用值,复合型变量存储的并不是符合类型数据(即对象)本身,而是指向复合类型数据的引用(或引用值)p1 == p2 方法是判断 p1 与 p2 的内存引用值是否相等,即内存空间和值都相等才会是true,楼主可以试试将P2的值改为与P1相等试试看,但使用equal方法,则只要值相等,则结果为true初学者,请多多指教  :)
      

  7.   

    赋值是两个引用p1 p2都指向同一个对象== 是比较p1 p2是否指向同一个内存地址
      

  8.   

    silenceroom(世之殃) 
    说得不错,有钱途
      

  9.   

    ==是用于比较两者的内存地址的,它们俩的地址一直都不同.所以两次都为假.有一本书的几处我建议你看看-----<<全方位学习JAVA>>的类型,对象赋值与比较...
    一起学习中....
      

  10.   

    感谢
    silenceroom(世之殃)...
    努力向你们看齐