ObjectClass
这个类是所有类的父类。没有显示的继承字其他类的类都是默认继承自此类。
相等== equal
基本数据类型之间的比较用==比较的是他们的值
复合数据类型的比较是说明两个的引用是一样的,也就是内存中存放的地址是一样的。
Object类中的equals函数比较的其实是内存地址,使用==实现的。但是很多其他类将其重写。Equals函数只用来表述对象之间的比较,运算符不能重载但是可以重载equals函数
举个例子:String类重写了equals函数
Strings1="new";
Strings2 ="new";
Strings3 =new String("new");
if(s1==s2)System.out.println("s1 is identical to s2");
else System.out.println("s1 is not identical to s2");
if(s1==s3)System.out.println("s1 is identical to s3");
else System.out.println("s1 is not identical to s3");
if(s1.equals(s2))System.out.println("s1 is equal to s2");
else System.out.println("s1 is not equal to s2");
if(s1.equals(s3))System.out.println("s1 is equal to s3");
else System.out.println("s1 is not equal to s3");
输出结果是:
s1 is identical to s2
s1 is not identical to s3
s1 is equal to s2
s1 is equal to s3
toString方法
这也是Object类自带的,所有类都会有的,可以自己重写的。
就是可以方便的把类的有关信息作为字符串输出,而且在遇到println之类时会自动调用
举个例子:
要是不重写toString的话
inta;
Strings;
TestClass(inta,String s){
this.a =a;
this.s =s;
}
public staticvoid main(String args[]){
TestClasst =newTestClass(10,"hh");
System.out.println(t);
}
输出:
TestClass@2a139a55
但是加上一段:
public String toString(){
return a+" "+s;
}
再进行System.out.println(t);的时候输出的是:
10 hh
另外,在用StringBuffer的时候,必须得先调用其toString转化成string才能用println输出