A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhoubinjian 金牌黑马   /  2016-3-21 21:43  /  775 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

亲爱的朋友们,下面这个代码我调用 了一个函数取另外的值,为什么还是和原来 的值一样的,没有变化 ,不知道那里出了问题,请朋友们帮帮找下。。

class VerCar
{
public static void main(String[] args)
{
  Car c=new Car();
  show(new Car());
}
public static void show(Car c)
{
String.color="break";
int.b=3;
c.run();
}
}
class Car
{
String color="red";
int b=4;
void run()
{
  System.out.print("color="+color+","+"b="+b);
}
}

RE8Y`Q@9GW8NGQYB0BKB0)J.png (6.58 KB, 下载次数: 8)

RE8Y`Q@9GW8NGQYB0BKB0)J.png

6 个回复

倒序浏览
编译没报错吗?
String.color和int.b都不对啊
show()方法应该是
  1. show(Car c) {
  2.      c.color = "black";
  3.      c.b = 4;
  4.      c.run();
  5. }
复制代码

而且你写
Car c = new Car();
show(new Car);
不是想改变c的值吗,那样就应该是
show(c);才对
回复 使用道具 举报
因为在show()方法中你调用了run()方法吧?而run()方法中调用的color和b始终是class car中的color和b,所以始终是red,4
回复 使用道具 举报
妄想年少轻狂 发表于 2016-3-21 22:24
编译没报错吗?
String.color和int.b都不对啊
show()方法应该是

show(new Car());跟
show(c);是同一样意思 ,我只是简化了,按你方法改了后,正确 了,谢谢了
回复 使用道具 举报
mundane 发表于 2016-3-21 23:02
因为在show()方法中你调用了run()方法吧?而run()方法中调用的color和b始终是class car中的color和b,所以始 ...

所加,,,谢谢,已经改过来了
回复 使用道具 举报
zhoubinjian 发表于 2016-3-22 01:04
show(new Car());跟
show(c);是同一样意思 ,我只是简化了,按你方法改了后,正确 了,谢谢了 ...

show(new Car());跟show(c);不一样
new Car()会在内存中创建一个新的对象,然后对这个新对象进行操作,因为没有变量指向这个新对象,所以show(new Car());执行完这个对象就变成垃圾,无法再访问了.
而show(c)是对已经创建的并且有变量c指向的对象进行操作,之后可以继续用c进行访问
回复 使用道具 举报
妄想年少轻狂 发表于 2016-3-22 10:01
show(new Car());跟show(c);不一样
new Car()会在内存中创建一个新的对象,然后对这个新对象进行操作,因为 ...

你说的是,其实我说的一样是,我只调用一次,所以都可以用这两个代码,要是多次调用,就用SHOW(C);,{:2_36:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马