5-2编程练习 关于toString方法 不明白

5-2编程练习 关于toString方法 不明白

老师您好,

-----------Test.java中

Car c = new Car("蓝色","张小泉");

 Car c1 = new Car("蓝色","张小泉");

boolean flag = c.equsls(c1);

System.out.println("car1和car2的引用比较:"+ flag);

--------------car.java 中

//重写equals方法,比较两个对象是否相等(比较color,userName)

public boolean equsls(Car obj) {

if(obj==null)  

return false;

if(this.getColor().equals(obj.getColor()) &&   // 拿this.getColor() 与obj.getColor()比较,  obj.getColor()是什么呢 它有什么值?

this.getUserName().equals(obj.getUserName())) {

return true;

}else 

return false;

}

这个toString 照搬老师的写法,不明白

if(obj==null)  //  判断car 项目 是否为空。 -----obj比较的是什么东西?  拿什么跟obj判断?(Car obj)  这里面必须写obj吗?

if(this.getColor().equals(obj.getColor()) &&   // 拿this.getColor() 与obj.getColor()比较,  obj.getColor()是什么呢 它有什么值?

this.getUserName().equals(obj.getUserName())) { //  这里的this.getColor()  是不是就是Car c = new Car("蓝色","张小泉"); 这里面的蓝色?



正在回答

登陆购买课程后可参与讨论,去登陆

2回答

1、你的equals方法里参数名可以随便写,你要写成Car abc也行,只不过就是后续代码里用abc进行操作了。

2、一般建议先判断是否为null,如果对象为null,之后再调用方法的时候就会产生空指针异常。

另外,虽然比较的是color,username,但都是Car类型的成员,所以方法中传入对象,然后调用属性进行比较比较方便合理。

没有马甲线的安琪拉 2017-01-13 10:26:12

按你贴出来的代码,如果是按如下格式:

public boolean equsls(Car obj) {
   if(obj==null)  
     return false;
   if(this.getColor().equals(obj.getColor())  &&  this.getUserName().equals(obj.getUserName())) {
     return true;
   }else 
     return false;
   }
}

这里的obj就是传入的比较对象,也就是c.equals(c1)时,obj就代表c1,this代表c。

所以obj==null,对应可以理解为就是判断传入的c1是否是null,如果是就不用比了。

同理,obj.getColor()获取的是c1的颜色。

必须吐槽啊,你这又是代码又是文字的,看着实在太费劲了。。。。看你这个问题,理解题目意思费了我半天劲。记得采纳哈~~~

  • 提问者 慕粉1124253375 #1
    (Car obj) ,if(obj==null) 这是规定的前提格式吗? 这里必须写obj 吗? 我比较的是 Color、、UserName, obj可以换成color吗,
    2017-01-13 12:00:46
  • Vincon 回复 提问者 慕粉1124253375 #2
    obj是你随便定义的一个传入接收的名称,可以是Object abcd if(obj == null)先判断一下他是不是空, 其实能保证程序100%无错,不加也行.
    2017-04-04 10:11:20
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师