Java细节知识整理

==与equals:

我们知道,当没有重写equals方法时,两者对于引用类型变量而言都表示的是其引用地址,所以是没有区另的。而"=="在对基本类型数据进行比较 时,是比较的它们的数值大小。

equals()方法则是对于引用类型变量的比较,当两个引用变量指向堆中不同的地址时,equals会对它们各自指向地址内的内容进行取出访问;例如字符串“Hello”与"hello",则是对它们挨个扫描,若有不同,是返回false,若相同返回true;

HashSet:从Set扩展而来,同Set一样,不可存放重复元素。拿什么来判断?hashCode()方法计算出hashCode值,进而进行前后存入的元素是否为同一元素;其次,调用equals()来对其字符序列验证,若返回为false进行存入,否则要么覆盖,要么链式存储。然而,当存在在同一块地址内有多个值链式存在时,这会大大影响HashSet的性能;所以我们应当保证重写hashCode()与equals()两者返回"相同"的结果。

sleep与wait的区别:

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,从而将执行机会给其他线程,但监控状态依然保持,到时候会自动恢复。调用 sleep不会释放对象锁。

wait是Object类的方法,对此对象调用 wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态

...(待续)

你可能感兴趣的:(equals)