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("蓝色","张小泉"); 这里面的蓝色?
正在回答
1、你的equals方法里参数名可以随便写,你要写成Car abc也行,只不过就是后续代码里用abc进行操作了。
2、一般建议先判断是否为null,如果对象为null,之后再调用方法的时候就会产生空指针异常。
另外,虽然比较的是color,username,但都是Car类型的成员,所以方法中传入对象,然后调用属性进行比较比较方便合理。
按你贴出来的代码,如果是按如下格式:
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的颜色。
必须吐槽啊,你这又是代码又是文字的,看着实在太费劲了。。。。看你这个问题,理解题目意思费了我半天劲。记得采纳哈~~~
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7238 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星