Java第九天-equals:& String

==

1.基本数据类型,根据基本数据类型的判断是否相等。相等返回true,反之返回false(只比较值是否相等,与数据类型无关)

2.引用数据类型,比较引用类型变量的地址值是否相等

equals:

1.只能处理引用数据类型

2.在object中发现equals()仍然比较的是两个引用变量的**“地址值”**是否相等

!对于String类型的数据来说:String类中重写了equals方法,所以具体比较的不再是两个变量的地址值,比较的具体的值

public boolean equals(Object obj) {
	if (this == obj) {
		return true;
	} else if (obj instanceof Order) { // this != obj, 判断obj是否为order类型的
		Order o = (Order) obj;
		return this.orderId == o.orderId  //判断他们的属性值是否相同
				&& this.orderName.equals(((Order) obj).orderName);
	} else
		return false;
}

在这里插入图片描述在这里插入图片描述
当p1和p2被new出来之后,系统在堆空间开辟空间,因为age是基本数据类型的,所以会直接写在堆中,二对于name,是string类型的,引用类型的,实际上存储的是一个地址,这个地址指向字符串常量池里的 “AA”,如果字符串常量池没有“AA”,则系统会在字符串常量池里重新创建一个“AA”的常量,再把该地址赋给p1或者p2中的name属性

toString()方法:

1.当我们打印一个对象的引用时,实际上默认调用的就是这个对象的toString()方法

2.当我们打印的对象所在的类中没有重写Object的toString()方法时,调用的就是Object中定义的toString()方法,返回此对象所在的类及对应的堆空间实体的首地址值

3.重写后,调用的就是我们重写的toString()方法,常常这样重写,将对象的属性信息返回

4.像String,包装类,File,Date类等,已经实现了Object类中toString()方法的重写

发布了58 篇原创文章 · 获赞 3 · 访问量 1963

猜你喜欢

转载自blog.csdn.net/qq_34343249/article/details/84979060
今日推荐