为什么输出结果为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回答

好帮手慕小班

2019-05-21

同学你好,System.out.println("car1和car2的引用比较:"+(car1==car2));这个语句是使用==来比较两个对象地址哦!并不比较两个对象的内容哦!所以输出结果为false,修改建议如下:

http://img.mukewang.com/climg/5ce396e50001172108430260.jpg

初始化对象时,要给对象赋给相应的值,否则会报空指针异常,并且调用equals方法,来比较两个对象的内容!

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

0

0 学习 · 11489 问题

查看课程