标题:一个对象引用的问题
只看楼主
lrcdddd
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2014-7-3
结帖率:11.11%
已结贴  问题点数:10 回复次数:5 
一个对象引用的问题
class point
{
    int x,y;
    void setXY(int m,int n)
    {
        x=m;
        y=n;
    }
}
public class application4_8
{
    public static void main(String args[])
    {
                 point  p1,p2,p3;
                p1=new point();
        p2=new point();
        System.out.println("p1的引用:"+p1);
        System.out.println("p2的引用:"+p2);
        p1.setXY(1111,2222);
        p2.setXY(-100,-200);
        System.out.println("p1的x,y坐标:"+p1.x+"."+p1.y);
        System.out.println("p2的x,y坐标:"+p2.x+"."+p2.y);
        p2=p1;
        System.out.println("p1的x,y坐标:"+p1.x+"."+p1.y);
        System.out.println("p2的x,y坐标:"+p2.x+"."+p2.y);
        p3=p2;
        p3.x=10;
        p3.y=60;
        System.out.println("p1的x,y坐标:"+p1.x+"."+p1.y);
    }
}

为什么最后p1的坐标是10,60,按道理说p2赋值给p3,应该用p2的值代替P3,则p1的坐标应该不变啊,怎么会变成10,60,不懂,请大神指教!!
搜索更多相关主题的帖子: public 
2014-10-12 12:04
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
得分:4 
程序代码:
package thread_437143;

class Point {
    int x, y;

    void setXY(int m, int n) {
        x = m;
        y = n;
    }
}

public class Application4_8 {
    public static void main(String args[]) {
        Point p1, p2, p3;
        p1 = new Point();
        p2 = new Point();
        System.out.println("p1的引用:" + p1);
        System.out.println("p2的引用:" + p2);
        p1.setXY(1111, 2222);
        p2.setXY(-100, -200);
        System.out.println("p1的x,y坐标:" + p1.x + "." + p1.y);
        System.out.println("p2的x,y坐标:" + p2.x + "." + p2.y);
        p2 = p1;
        System.out.println("p1的x,y坐标:" + p1.x + "." + p1.y);
        System.out.println("p2的x,y坐标:" + p2.x + "." + p2.y);
        p3 = p2;
        p3.x = 10;
        p3.y = 60;
        System.out.println("p1的x,y坐标:" + p1.x + "." + p1.y);
        System.out.println("p1的引用:" + p1);
        System.out.println("p2的引用:" + p2);
        System.out.println("p3的引用:" + p3);
    }
}


执行完下面这些语句之后,p2指向p1,p3指向p2,所以结果没有什么不可思议的
p2 = p1;
p3 = p2;
2014-10-12 12:26
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
得分:4 
你都知道这是对象引用咯,为什么还会说不可思议,只有你没了解什么是对象引用。

思考赐予新生,时间在于定义
2014-10-12 13:41
lrcdddd
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2014-7-3
得分:0 
我可能弄反了,
2014-10-12 14:16
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
得分:0 
以下是引用lrcdddd在2014-10-12 14:16:57的发言:

我可能弄反了,


p2 = p1;这样的语句在Fortran或者早期的Basic语言里,
写成【let p2 = p1;】

读作让p2等于p1,或者让p2指向p1
前面加个let并读作【让】,就不会理解反了
2014-10-12 14:58
liucao
Rank: 10Rank: 10Rank: 10
来 自:恶灵之城
等 级:贵宾
威 望:13
帖 子:538
专家分:1575
注 册:2014-8-6
得分:4 
已受教,留名顶贴

one car come one car go ,two car peng peng people die.
2014-10-15 09:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-437143-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.302249 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved