小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
1.数据类型
- 基本数据类型 byte,short,int,long,float,double,char,boolean
- 引用数据类型:类,数组,接口(引用类型指向一个对象,指向对象的变量是引用变量,引用类型的默认值都是null)
2.==
总的说就是比较数值,对于基本数据类型 比较数值好理解,对于引用数据类型,比较数值就是比较的是对象存放的地址值
3.equals
只有引用类型才有
- Object 是所有类得超类 意思就是每个对象都有equlas方法,都默认会继承Object中得这个方法 如图,意思默认equals比较得是对象地址值
但是............我今天想分享得是,我们可以重写equals方法,比如我们最常用得String类,他就重写了equals方法,先上代码(String源码)
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
如果传得对象是本身就直接返回ture,若传入得对象是String类型得(instanceof:判断一个对象是否为一个类的实例),如果是String类型,将其进行对象转型,然后对两个对象进行内容比较,若内容相同就返回ture 若不同返回false
4.总结
我们在面试时或者背面试题时,基本都会看到==和equals之间有什么区别,我们基本也都非常熟悉,今天其实最想分享得是String重写了equlas方法,对于String重写equlas方法我们在日常开发中一般也是够用了,有时如有开发需要,我们在声明一个类后我们也是可以重写这个equlas方法,按我们得需要去重写。