方法 hashCode() getClass() getName() toString() equals() finalize() clone()

hashCode()

         返回的是该对象的哈希码值,是通过哈希表里面的哈希算法得到的

getClass()

        返回此Object正在运行的类

getName()

         返回Class对象所表示的实体名称(当前类的全路径名称)   


     代码表示:

       public class methodDemo {
     public static void main(String[] args){
    Sdudent s1= new Sdudent();
    System.out.println(s1.hashCode());                                           // 961
    System.out.println(Integer.toHexString(s1.hashCode()));                / /3c1
    System.out.println(s1.getClass()) ;                                                  // class text01.Sdudent
    Class c = s1.getClass();
    System.out.println(c.getName());                                                   // text01.Sdudent
    System.out.println(s1.getClass().getName());                             // text01.Sdudent
     
     }
     public void sdudent(){
     
     }
}

     代码结果:

        961
        3c1
        class text01.Sdudent
        text01.Sdudent
        text01.Sdudent



toString()

         返回的是该对象的字符串表示

         Integer:是int类的一个包装类型

         没有重写的toString()相当于:s.getClass().getName()+"@"+Integer.toHexString(s.hashCode())


equals()

        比较:默认比较的是地址值

        重写equals():返回的是布尔类型

   

       代码表示:

    public class Sdudent {
private String name ;
private int age ;
public Sdudent(String name, int age) {
this.name = name;
this.age = age;
}
public Sdudent() {
super();
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

//toString()方法
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}


// @Override
// public boolean equals(Object obj) {
// return (this==obj) ;
// }

//自动生成:默认的去重写equals方法
@Override
public boolean equals(Object obj) {
if (this == obj)//this:Student当前类对象
return true;
if (obj == null)//如果obj对象是空对象,Student类具体对和空对象比较,没有意义
return false;
if (!(obj instanceof Sdudent))  //getClass().equals(obj.getClass)
return false;
Sdudent other = (Sdudent) obj;//将父类引用强制转换子类对象
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;//==比较的地址值两个对象做一个==
}

//obj instanceof Student 该obj的对象是否是Student类的实例化!(考点):instanceof


}


public class sdudentTest {
    public static void main(String[] args){
    Sdudent s2=new Sdudent("赵宇豪",20);
    Sdudent s3=new Sdudent("赵宇豪",20);
   
    System.out.println(s2.equals(s3));
   
    System.out.println(s2.hashCode());
System.out.println(s2.toString());
    }
}

        代码结果:

true
35564581
Student [name=赵宇豪, age=20]

    finalize()

          当垃圾回收器确定不存在对该对象的更多利用时调用,什么时候调用不确定,要等GC垃圾回收器这个线程什么时候空闲


protected Object clone()

          创建并回收此对象的一个副本,返回的是Object类型

      条件:

          要实现接口Cloneable,否则抛出CloneNotSupportedException异常

       代码体现:

//重写了clone,但前提是该类必须实现Cloneable接口!
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}

public static void main(String[] args) throws CloneNotSupportedException {
//创建学生类对象
Student s = new Student() ;
s.setName("高圆圆");
s.setAge(27); 
System.out.println(s.getName()+"---"+s.getAge());

System.out.println("-----------------------------");

//使用clone创建该Student对象的一个副本
Object obj = s.clone() ;
Student s2 = (Student) obj;//将父类的引用强制转换成子类对象
System.out.println(s2.getName()+"---"+s2.getAge());

//没有学习过clone方法的时候
Student s3 = s ;
System.out.println("-----------------------------");
System.out.println(s3.getName()+"----"+s3.getAge());
System.out.println("-----------------------------");
//其实有区别"
Student s4 = new Student() ;//重新创建对象,地址值发生变化,赋值,输出成员变量
s4.setName("张三");
s4.setAge(20); 
System.out.println(s.getName()+"---"+s.getAge());
System.out.println(s3.getName()+"---"+s3.getAge());
System.out.println(s4.getName()+"---"+s4.getAge());
}
}

 

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值