一.hashCode()和equals()
1.hashCode()和equals()都是object的固有属性
equals()得出对象的地址 hashcode()我觉得得出的整数值也是对应对象的地址的
2.规定:equals()相等的两个对象,hashcode()一定相等;
hashcode()相等,equals()可能相等,也可能不等。
3.对于String,他重写了equals()和hashCode()。。
例如:
String s1=new String("nishizhu");
String s2=new String("nishizhu");
他们两个是s1==s2
equals现在变为比较值是否相同, 但是他们其实并不是存储在同一个地址,所以必须重写hashcode。
二:java的三大特征
1.封装
也就是把客观事物封装成抽象的类
封装就是属性和方法装到一个类里面。
目的是为了简化编程和安全性,你不必了解我这里面的细节,你通过接口来用就行了
2.继承
继承就是就是子类继承父类的特征和行为,使子类具有父类的一些方法和属性
3.多态
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:
使用的 时候的具体表现就是向上转型啊。。就是父类引用可以持有子类对象。那么父类的引用只能使用父类中有的方法,并且调用的时候调出来的是子类中重写过的
三.Object类的方法
1.getcCass()方法
getClass()返回一个对象的运行时类 如:
Class a=对象.getClass();//得到的是该对象的字节码文件 a.getName()得到名字
2.equals()
3.hashcode()
4.toString()方法:
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成
5.notify() 唤醒在此对象监视器上等待的单个线程
6.notifyAll() 唤醒在此对象监视器上等待的所有线程
7.wait() 导致当前线程等待