1、hashCode 与 equals 和“==”讲解
hashCode():该方法通常
用来将对象的内存地址转换为整数之后返回。hashCode()是Objetc对象里的方法,所以他能快速判断两个对象是否相等,大部分的对象的hashCode对象是不相等的,因为hashCode的值跟内存地址有关,如果我们重写了hashCode方法,导致对象hashCode值相等,再用equals()方法判断是否相等。这样我们就大大减少了 equals 的次数,相应就大大提高了执行速度。
2、hashCode()与 equals():如上所述,hashCode值相等,他们也不一定相等,还需用equals判断。
3、equals与==
==:基本数据类型比较的
是值,引用数据类型比较的是内存地址
equals() :通过 equals() 比较该类的两个对象时,等价于通过d等于号比较这两个对象。String 中的 equals 方法是被重写过的,因为 object 的 equals 方法是比较的对象的内存地址,而 String 的 equals 方法比较的是对象的值。
4、静态代码块
静态代码块在非静态代码块之前执行(静态代码块—非静态代码块—构造方法)。 该类不管创建多少对象,静态代码块只执行一次。如果静态代码块有多个,JVM 将按照它们在类中出现的先后顺序依次执行它们。
5、java中的静态引用
静态引入类的方式:
import static java.lang.Math.*;
可以不加类名直接使用方法,比如说:sqrt(4)
而平常的写法为:Math.sqrt(4)
6、静态代码块和非静态代码块
静态代码块只在第一次new 执行一次,之后不再执行,而非静态代码块在每 new 一次就执行一次。