为什么输出结果为false呢?
来源:5-2 编程练习
慕田峪1061482
2019-05-21 10:12:32
public class Car { //属性:车的颜色color、车主姓名userName private String color; private String userName; //无参构造 public Car() { } //带参构造函数(参数为color和useName),对属性进行赋值 public Car(String color,String userName) { this.setColor(color); this.setUserName(userName); } //通过封装实现对私有属性的get/set操作 public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } //创建无参无返回值得方法use(描述内容为:我是机动车!) public void use() { System.out.println("我是机动车!"); } //重写equals方法,比较两个对象是否相等(比较color,userName) public boolean equals(Object obj) { if(obj==null) { return false; } Car sc=(Car) obj;//强制转换成Car类 if(this.getColor().equals(sc.getColor())&&this.getUserName().equals(sc.getUserName())) { return true; }else { return false; } } } public class TestCar { public static void main(String[] args) { //实例化父类对象,并传入两组相同的属性值 Car sc=new Car(); //调用父类use方法 sc.use(); //通过重写equals方法,比较两个对象是否相等 Car car1=new Car(); Car car2=new Car(); System.out.println("car1和car2的引用比较:"+(car1==car2)); System.out.println("=================================="); //实例化子类Taxi对象,并传入属性值 Taxi si=new Taxi("长生","蓝色","张小泉"); //调用ride和use方法 si.ride(); si.use(); //输出重写toString后的taxi信息 System.out.println(si.toString()); System.out.println("=================================="); //实例化子类HomeCar对象,并传入属性值 HomeCar st=new HomeCar(7,"紫色","孙二娘"); //调用display方法及它的重载方法 st.display(); st.display(5); } }
1回答
同学你好,System.out.println("car1和car2的引用比较:"+(car1==car2));这个语句是使用==来比较两个对象地址哦!并不比较两个对象的内容哦!所以输出结果为false,修改建议如下:
初始化对象时,要给对象赋给相应的值,否则会报空指针异常,并且调用equals方法,来比较两个对象的内容!
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
相似问题