2 qq 31930741 qq_31930741 于 2016.03.22 22:06 提问

关于java中尝试改变对象的引用 ,这是老师出的一道题 麻烦大家了!

6、尝试改变对象的引用
change (Object j){
o=new Obj;
}

不知道这是什么意思,请各位指教。麻烦各位说一下意思,谢谢!

9个回答

caozhy
caozhy   Ds   Rxr 2016.03.22 23:11
 这么说就清楚了。
这首先是伪代码,也就是它本身不是合法的java代码,只是说了这么一个意思。
这里尝试在代码内改变对象的引用,但是不会作用到实际参数,看下面三组代码
static void main()
{
int i = 1;
change(i);
System.out.printf(i); // 还是1
}
static void change(object o)
{
o = 2;
}
再看
class A
{
    public int i;
}
static void main()
{
A a = new A();
A.i = 1;
change(a);
System.out.printf(i); // 是2,没有改变引用,而是直接修改的对象
}
static void change(object o)
{
A o1 = (A)o;
o1.i = 2;
}
再看
class A
{
    public int i;
}
static void main()
{
A a = new A();
A.i = 1;
change(a);
System.out.printf(i); // 还是1,因为改变引用不会作用到实参
}
static void change(object o)
{
A a = new A();
a.i = 2;
o = a;
}
Jamekt
Jamekt 我还是觉得他老师说的是Object是派生类 ,Obj是基类(新人)
2 年多之前 回复
caozhy
caozhy 回复qq_31930741: 如果回答满意,请点下我回答右边的采纳,谢谢
2 年多之前 回复
qq_31930741
qq_31930741 谢谢你啊
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.03.22 23:12

这个是函数传参的问题,和多态没有任何关系。

bi_ma_wen
bi_ma_wen   2016.03.22 22:15

就是将引用指向新的Object对象

qq_31930741
qq_31930741 change (Object o){ o=new Obj; }是这样的,刚刚打错了
2 年多之前 回复
qq_31930741
qq_31930741 change (Object o){ o=new Obj; }是这样的,刚刚打错了
2 年多之前 回复
jianjun4833
jianjun4833   2016.03.22 22:17

写完全了吗?题就是这样?

qq_31930741
qq_31930741 change (Object o){ o=new Obj; }是这样的,刚刚打错了
2 年多之前 回复
XiaoC_Android
XiaoC_Android   2016.03.22 22:37

你老师是要你体会多态么?

qq_31930741
qq_31930741 change (Object o){ o=new Obj; }是这样的,刚刚打错了
2 年多之前 回复
qq_31930741
qq_31930741 是的 麻烦你说一下意思吧 谢谢
2 年多之前 回复
luochoudan
luochoudan   Ds   Rxr 2016.03.22 22:44

Obj是啥?没写全吧?

qq_31930741
qq_31930741 change (Object o){ o=new Obj; }是这样的,刚刚打错了
2 年多之前 回复
qq_31930741
qq_31930741   2016.03.22 22:47

刚刚打错了 正确的是这样 change (Object o)
{
o=new Obj;
}

不知道这是什么意思,请各位指教。麻烦各位说一下意思,谢谢!

xiaoya5271
xiaoya5271   2016.03.22 22:50

难道不用return o?

atsimon
atsimon   2016.03.22 22:52

将o这个引用变量指向新创建的Obj对象。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
剥洋葱
布告,布告! 应老师要求,我们要做一道打印图形的题目,这是程序员最基本的能力。 那废话不多说,我们来说要求的图形 AAAAA ABBBA ABCBA ABBBA AAAAA 就是外到内,从A到Z。每一层都是一种字母,最里面的一层为一个,即最中心的一个。 输入格式: 一行,一个整数,即图形的层数 输出格式: 如上述图形 输入样例: 3 输出样例: AAAAA
打印·剥洋葱
2016年吉首大学信息学院程序设计新生赛 pta
做一个好的程序员,我们需要做很多很多
    一个偶然的机会看到这个帖子,感觉很有借鉴意义就转载过来了,希望原创者不会有什么意见。:)    做这行也算是有些年了,也曾被人家面试的时候打击过,回过头来现在也在打击着别人。感觉上踏实这两个字实在是难写,做好一件事情需要足够的专注和耐性,做软件本身更是需要一种类似偏执的执著。摘下这篇文章自勉吧。作者:金蝶中间件公司CTO袁红岗不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦
题目-剥洋葱
5-14 剥洋葱   (15分) 布告,布告! 应老师要求,我们要做一道打印图形的题目,这是程序员最基本的能力。 那废话不多说,我们来说要求的图形 AAAAA ABBBA ABCBA ABBBA AAAAA 就是外到内,从A到Z。每一层都是一种字母,最里面的一层为一个,即最中心的一个。 输入格式: 一行,一个整数,即图形的层数 输出格式: 如上述图形 输入样例:
关于生日的那个经典逻辑题解释
小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日 是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗? 3月4日 3月5日 3月8日 6月4日 6月7日 9月1日 9月5日 12月1日 12月2日 12月8日 小明说:如果我不知道的话,小强肯定也不知道 小强说:本来我也不知道,但是现在我知道了 小明说:哦,那我也知道了 请根
CDOJ 每周一题div2 这是一道暴力题(暴力/思维)
昨天chipizz突然问我这道题怎么写,我当时就嘴炮AC了一下,感觉似乎很简单啊,于是去CDOJ注册了个帐号打算写写。 拿到这道题的第一想法是预处出现有数字能够组成的所有的能被3整除的一位数还有两位数,然后让k" role="presentation" style="position: relative;">kkk对2取个模再xjb特判一下就结束了,然而wa12。 后来和C君稍微讨论了一下,发
又一道简单题
又一道简单题 Time Limit: 5000MS Memory Limit: 65535KB 64bit IO Format: SubmitStatusDescription 输入一个四个数字组成的整数 n,你的任务是数一数有多少种方法,恰好修改一个数字,把它 变成一个完全平方数(不能把首位修改成 0)。比如 n=7844,有两种方法:3844=62^2和 7744=8
L1-4A乘以B
L1-4. A乘以B 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 看我没骗你吧 —— 这是一道你可以在10秒内完成的题:给定两个绝对值不超过100的整数A和B,输出A乘以B的值。 输入格式:
gplt 团体程序设计天梯赛 多项式A除以B(模拟)
5-10 多项式A除以B   (25分) 这仍然是一道关于A/B的题,只不过A和B都换成了多项式。你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数。 输入格式: 输入分两行,每行给出一个非零多项式,先给出A,再给出B。每行的格式如下: N e[1] c[1] ... e[N] c[N] 其中N是该多项式非零项的个数,e[i]是第i个非零项的指数,c
排队做操迟到II
题目描述 做操的时间到了,小明和另外几个同学没有吸取上一次的教训,在教室思考讨论老师讲的一道题目(学习用功型),当他们想通这个题时,其他同学已经在操场上排好队了,他们快速来到操场,希望尽快找到以前排队的位置,准备做操,小明他们记得应该排在某学号同学的后面。你能不能来帮帮小明他们呢? 输入 输入(三行): n m(现在队伍的长度 待插入的同学人数) n个同学的学号(5位整数)