首页 > 代码库 > java.long.object类中的重要方法
java.long.object类中的重要方法
一:概念
java.long.object
Object类是所有Java类的祖先。每个类都使用 Object 作为超类。
二:方法概览
clone()
创建并返回此对象的一个副本。
equals(Object obj)
指示某个其他对象是否与此对象“相等”。
finalize()
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。(JVM中自带的垃圾回收机制只能回收new出的对象)
getClass()
返回一个对象的运行时类。
hashCode()
返回该对象的哈希码值。(默认下,Object中的hashCode() 返回对象的32位jvm内存地址。也就是说如果对象不重写该方法,则返回相应对象的32为JVM内存地址。)
notify()
唤醒在此对象监视器上等待的单个线程。
notifyAll()
唤醒在此对象监视器上等待的所有线程。
toString()
返回该对象的字符串表示。
wait()
导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。
wait(long timeout)
导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量。
wait(long timeout, int nanos)
导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。
三:方法的具体使用
1.equals()与"=="
object类中,equals与"=="均默认为比较对象在JVM中的地址。因为equals就是由"=="实现的。(不同的引用必须指向同一对象)
//equals方法源码
public boolean equals(Object obj){ return(this == obj); }
//String类中对equals方法的重写
public boolean equals(Object anObject) { 2 if (this == anObject) { 3 return true; 4 } 5 if (anObject instanceof String) { 6 String anotherString = (String) anObject; 7 int n = value.length; 8 if (n == anotherString.value.length) { 9 char v1[] = value;10 char v2[] = anotherString.value;11 int i = 0;12 while (n-- != 0) {13 if (v1[i] != v2[i])14 return false;15 i++;16 }17 return true;18 }19 }20 return false;21 }
2.equals()与hashcode()
equals()和hashCode()方法是用来在同一类中做比较用的,尤其是在容器里如set存放同一类对象时用来判断放入的对象是否重复。
equals()相等的两个对象,hashcode()一定相等,equals()不相等的两个对象,却并不能证明他们的hashcode()不相等。
当equals方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
//String类中对hashcode()方法的重写public int hashCode() { 2 int h = hash; //Default to 0 ### String类中的私有变量, 3 if (h == 0 && value.length > 0) { //private final char value[]; ### Sting类中保存的字符串内容的的数组 4 char val[] = value; 5 6 for (int i = 0; i < value.length; i++) { 7 h = 31 * h + val[i]; 8 } 9 hash = h;10 }11 return h;
12 }
//没有重写hashCode方法的类,直接返回32位对象在JVM中的地址;Long类重写了hashCode方法,返回计算出的hashCode数值public class ComHashcode{ 2 public static void main(String[] args) throws Exception { 3 ComHashcode a = new ComHashcode(); 4 ComHashcode b = new ComHashcode(); 5 System.out.println(a.hashCode()); //870919696 6 System.out.println(b.hashCode()); //298792720 7 8 Long num1 = new Long(8); 9 Long num2 = new Long(8);10 System.out.println(num1.hashCode()); //811 System.out.println(num2.hashCode()); //812 }13 }
3.wait()与sleep()
sleep是Thread类的一个方法,wait是Object类的一个方法。
sleep不会释放资源,wait会释放掉资源。
sleep不会释放资源,wait会释放掉资源。
java.long.object类中的重要方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。