一:hashCode()
结果:
打印出来的是取到的一个近似地址的数字
二.getClass()
结果:
打印出的是de对象指向的类demo1,而这个类是在object这个包下的
三.getName()
结果:
这是以字符串的形式输出类demo1的路径
四.toString()
结果:
其中Integer.toString( )方法是把一个整数转换成16进制的
这两种方法输出是一样的,所以可见直接输出对象就是调用了对象的toString()方法
五.equals( )
object自带的equals()方法是比较两个对象的地址值是否相同,相同就返回true,然而string自带的重写方法是比较两个字符串的内容是否相同,所以根据需要,我们要重写这个方法
package equals;
class student{
private int age;
private String name;
public student(String name, int age) {
// TODO 自动生成的构造函数存根
this.name=name;
this.age=age;
}
public student() {
// TODO 自动生成的构造函数存根
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean equals(Object obj) {
student s=(student) obj;//向下转型,因为name和age都是私有变量,obj访问不到
if(this==obj)//如果两个对像相同的话就不需要比较了
{
return true;
}
if(!(obj instanceof student))
return false;
if(this.name.equals(s.name)&&this.age==s.age) {
return true;
}
else {
return false;
}
}
}
public class equalsDemo {
public static void main(String[] args) {
// TODO 自动生成的方法存根
student s1=new student("hhh",12);
student s2=new student("hhh",12);
System.out.println(s1.equals(s2));//true
student s3=new student();
s3=s1;
student s4=new student();
System.out.println(s1.equals(s3));//true
System.out.println(s1.equals(s4));//false
}
}
六.clone( )
class student implements Cloneable{//克隆一定要写的接口名称
private int age;
private String name;
public student(String name, int age) {
// TODO 自动生成的构造函数存根
this.name=name;
this.age=age;
}
public student() {
// TODO 自动生成的构造函数存根
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
protected Object clone() throws CloneNotSupportedException{//重写clone方法
return super.clone();
}
}
public class equalsDemo {
public static void main(String[] args) throws CloneNotSupportedException {
// TODO 自动生成的方法存根
student s=new student();
s.setName("shen");
s.setAge(12);
Object obj=s.clone();
student s2=(student)obj;
System.out.println(s.getName()+s.getAge());
System.out.println(s2.getName()+s2.getAge());
System.out.println("-----------------");
s.setName("cheng");
s.setAge(13);
System.out.println(s.getName()+s.getAge());
System.out.println(s2.getName()+s2.getAge());
}
}
可见,虽然s改了,但是s1没改,这才是克隆的好处