String toString()
含义
此方法用来将对象的信息以字符串方式反馈出去。 规定: 此方法是默认调用的(自动调用).
因此,子类的对象要想通过toString()方法来反馈信息,则必须重写它。
Demo
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">package com.hqg.oop.d34;
import com.hqg.oop.d33.a1.MyRectangle;
//部分代码展示
public class MyCube {
//属性
private MyRectangle mr; //将长方形作为当前长方体的底面
private int d; //长方体的高
//构造器
public MyCube() {
}
public MyCube( MyRectangle mr, int d ){
this.d = d;
this.mr = mr;
}
//设定器
public void setMr( MyRectangle mr ){
this.mr = mr;
}
public void setD(int d) {
this.d = d;
}
//访问器
public MyRectangle getMr() {
return mr;
}
public int getD() {
return d;
}
//求体积
public int volume(){
return mr.area() * d ;
}
//求表面积
public int areas(){
return 2 * mr.area() + 2 * mr.getH() * d + 2 * mr.getW() * d ;
}
//将所有信息以字符串反馈
public String toString(){
return "已知长方体的底面信息如下:\n" + mr + "\n同时,已知长方体的高度d = " + d
+ "\n则,这个长方体的体积volume = " + this.volume() + ",其表面积 ares = " + this.areas();
}
}
class LittleCube extends MyCube{
private String name ;
public LittleCube() {
super(); //自动的,是隐藏的.
}
public Little( String name) {
super();
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
//子类的对象要想通过toString()方法来反馈信息,则必须重写它。
public String toString(){
return MyCube.toString() + "它的名字是" + this.name() ;
}
}
</span></span></span></span>
boolean equals()
含义
此方法用来比较两个对象是否相等。
使用方式: boolean flag = obj1.equals( obj2 );
即: 比较 obj1和obj2对应的对象是否相等。
规则: 祖先规定,当obj1和obj2引用的是同一个对象时,则结果为true; 反之,则结果为false。
结论: 在自定义类中,若要判断两个对象内容是否一样(相等),则必须重写 equals()方法。
目的: 为对象判断相等提供依据。
Demo
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">packagecom.hqg.oop.d34.a1;
public classStringTest {
public static void main(String[] args) {
int x = 10;
int y = 20;
boolean flag1 = x == y;
String st1 = new String("中国北京") ;
String st2 = new String("中国北京");
boolean flag = st1 == st2 ; //判断对象地址是否一样。
System.out.println("flag =" + flag );
flag = st1.equals( st2 ); //判断对象的内容是否完全一样。
System.out.println("flag =" + flag );
String s1 = "中国北京";
String s2 = "中国北京";
flag = s1 == s2 ;
System.out.println( flag ? "s1和s2是同一个对象" : "s1和s2不是同一个对象");
}
}
</span></span></span></span>
由上面的demo判断equals()和==的区别及联系,下面看内存分析图,理解动态处理机制:
结论
1.凡是对象比较相等,使用 equals()方法;
1. 凡是基本类型的数据判断相等,则使用 == ;
2. ==用来判断对象地址是否一样;
3. Equals()判断对象内容是否完全一样。
业务思想
关于String toString()方法是对于项目中输出时的一个变更计划,无论是对于将对象的信息以字符串方式反馈出去,方便客户的理解和使用,还是在子类中输出方法的重写,都能够加强用户对于本应用程序的喜爱程度,此项必须加强使用。而对于boolean equals()的使用则是,给我们以警告,注意基本数据的比较与对象比较的区别和联系,引以为戒,以免造成不必要的损失。