对象的比较

* 总结
 * 1.对象比较一定是某一个类自己定义的功能
 * 2.对象比较时一定要判断是否为null,地址是否相同,属性是否相同。
 * 
 * 
 * 
 * 如果有两个数字要判定是否相等,可以使用“==”如果是字符串使用equals()
 * 如果自定义的类,要想判断它的两个对象是否相等,那么必须必须类对象
 * 对象=数据集合进行比较要使用比较的所有属性
 */
class Book{
	private String title;
	private double price;
	public Book(String title,double price) {
		this.title =title;
		this.price = price;
	}
	//本类接收本类对象,对象可以直接访问属性,不需要使用getter了
		//两个功能:带回了需要比较的信息,方便访问
	public boolean compare(Book book) {
		if(book==null) {
			return false; //没有必要进行具体的比较
		}
		//执行“b1.compare(b2)”代码时会有两个对象
		//当前对象this(调用方法对象,就是b1引用)
		//传递的对象book(引用传递,就是b2引用)
		if(this==book) {  //内存地址相同
							//避免进行具体细节的比较,节约时间
			return true;
		}
		if(this.title.equals(book.title)&&this.price==book.price) {
		return true;}
		else {
			return false;
		}
		
	}
	public String getTitle() {
		return this.title;
	}
	public double getPrice() {
		return this.price;
	}
}
public class duixiangbijiao {

	public static void main(String[] args) {
		Book b1= new Book("JAVA开发",79.2);
		Book b2=new Book("JAVA开发",79.2);
		if(b1.getTitle()==b2.getTitle()&&b1.getPrice()==b2.getPrice()) {
			System.out.println("是同一个对象");
		}else {
			System.out.println("不是同一个对象");
		}

	}
	/*
	 * 主方法main()就是一个客户端, 客户端的程序逻辑越简单也好,最好隐藏所有的细节
	 * 如果要进行信息比较,那么所有的具体的比较细节必须由每个对象自己完成比较的方法
	 * 暂时定义compare()
	 */
	
}

额外讲解,

如果说现在一个类中的属性使用了private封装了,那么在类的外部不能够通过对象直接调用属性。

但是如果说将一个对象传递回到类的方法里面,那么就相当于取消了封装的形式,可以直接通过对象访问属性

class Info{
	private String msg ="Hello";
	public void print() {
		System.out.println("msg = "+msg);
	}
	//本类接收本类对象,对象可以直接访问属性,不需要使用getter了
	//两个功能:带回了需要比较的信息,方便访问
	public void fun(Info temp) {
		//在类的内部直接利用对象访问私有属性
		temp.msg = "修改内容";
	}
}
public class Demo {

	public static void main(String[] args) {
		Info x= new Info();
		x.fun(x);//没有什么意义,只是一个语法验证
		x.print();

	}

此类形式的代码会在对象比较中出现,但是也是一种常见形式,即:一个类可以接受本类对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值