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
这里涉及的概念原理麻烦讲解下

解决方案 »

  1.   

    楼主的一系列问题说明楼主要抱着Java的书看上3天。
      

  2.   

    == 判断的是内存地址,只要指向了同一个对象,那么就相等,否则就不相等
    equals 是类自己实现的判断是否相等的关系。
    也可以这么认为,== 是物理相等,而equals是逻辑相等
      

  3.   

    对象名代表了对象在内存中的首地址,那么当进行==比较时就是比较看两个对象是否代表了同一个内存地址。equals比较两个对象包含的内容是否相等
      

  4.   

    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 
    菜鸟拙见,高手指点
      

  5.   


    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 
      

  6.   

    P1和P2所引用的是两个不同的对象,在内存中的引用也存在差异。
    而P3和P4是同一个对象,所以相同。
      

  7.   

    ==只是比较引用
    equal方法在Object中与==的作用相同
    但是所有的类都继承Object,所以许多类默认的equal方法的效果和==一样
    但是一部分类对该方法进行了覆盖,包括Point,此外还有String、Integal等
      

  8.   

    了解一下java变量在内存的分配情况