java.long.object类中的重要方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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方法:比较两个对象引用所指向的内容是否相等。(可指向不同对象,对象里的内容相同)
//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());    //8
11         System.out.println(num2.hashCode());    //8
12     }
13 }

 3.wait()与sleep()

 sleep是Thread类的一个方法,wait是Object类的一个方法。
 sleep不会释放资源,wait会释放掉资源。

以上是关于java.long.object类中的重要方法的主要内容,如果未能解决你的问题,请参考以下文章

5.线程的八大核心基础知识之Thread和Object类中的重要方法详解

StringBuilder类中的重要方法

java 多线程3:Thread类中的静态方法

Day275.Thread和Object类中的重要方法 -Juc

Day276.Thread和Object类中的重要方法 -Juc

Java多线程3:Thread中的静态方法