---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ------------------------
Object 所有对象的直接或者间接地父类,该类中定义的是所有对象都具备的功能。
java中所有对象都具备比较性,都能比较是否相同。
equals 比较两个对象的内存地址
public class ObjectDemo {
public static void main(String[] args) {
ObjectDemo d1=new ObjectDemo();//当这个对象建立,他就具有了方法,是
//Object超类中所有的方法
ObjectDemo d2=new ObjectDemo();
ObjectDemo d3=d1;
System.out.println(d1.equals(d2));//其实比较的是内存地址 false
System.out.println(d1.equals(d3));// true
System.out.println(d1==d2);//false
System.out.println(d1==d3);//true
}
}
----------------------------------------------------
ClassCastException类型转化异常
如果自定义类中也有比较相同的功能,没有必要重新定义,只要沿袭父类中的功能,建立自己特有的比较内容即可,就是覆盖。
package biji.object;
public class Demo {
int num;
Demo(int num){
this.num=num;
}
public boolean equals(Object obj){//复写Object中的equals方法,复写哦!
//Object obj=new Demo 多态
Demo d=(Demo)obj; //向下转型
return this.num==d.num;
}
}
package biji.object;
public class ObjectDemo {
public static void main(String[] args) {
Demo d1=new Demo(4);//当这个对象建立,他就具有了方法,是Object超类
//中所有的方法
Demo d2=new Demo(5);
System.out.println(d1.equals(d2));
}
}//结果false
------------------------------------------------------
package biji.object;
public class Person {
}
package biji.object;
public class Demo {
int num;
Demo(int num){
this.num=num;
}
public boolean equals(Object obj){
if(!(obj instanceof Demo)){//instanceof是一个二元操作符(运算符),
//和==,>,<是同一类东西。
//由于它是由字母组成的,所以也是Java的保留关键字。
//它的作用是判断其左边对象是否为其右边类的实例,返回boolean类型的数据。
//可以用在继承中的子类的实例是否为父类的实现。
return false;
}else{
Demo d=(Demo)obj;
return this.num==d.num;
}
}
}
package biji.object;
public class ObjectDemo {
public static void main(String[] args) {
Demo d1=new Demo(4);
Person p=new Person();
System.out.println(d1.equals(p));//这里p是不能和d1比的。不是一个类型。编译会通过
//但是运行会出错。我们需要写一个判断语句,在Demo
//类中。
}
}
-----------------------------------------------------------------------------------------------------------
JAVA认为所有的对象都能被变成字符串打印
package biji.toString;
public class Demo {
int num;
Demo(int num){
this.num=num;
}
}
package biji.toString;
public class ObjectDemo2 {
public static void main(String[] args) {
Demo d1=new Demo(5);
System.out.println(d1.toString());//对象返回字符串,是个地址名
System.out.println(d1.hashCode());//对象哈希值 ,十进制的。
System.out.println(Integer.toHexString(d1.hashCode()));//哈希值
Class c=d1.getClass();
System.out.println(c.getName());//获取对象名
}
}//结果为biji.toString.Demo@150bd4d
22068557
150bd4d
biji.toString.Demo
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ------------------------