System.out.println( 10 == 10); // true
System.out.println( 10 == 11); // false
双方数值相同为 true 不同 为 false
1.2、引用数据类型
双方都是 字符串(引用)的时候比较的是双方的 内存地址
String i1 = new String(“张三”);
String i2 = new String(“张三”);
System.out.println(i1 == i2); // false
因为 i1 与 i2 所指向堆对象的内存地址不同所以为 false
equals( ) 是 java.lang 包下 Object 类里面的一个方法
Object 类里面的 equals 方法 源码如下:
public boolean equals(Object obj) {
return (this == obj);
}
可以看见源码中使用的是 “==” ,由此可以看出 Object 里面的 equals 方法其实底层比较的是内存地址,需要把 equals 方法重写才能比较内容
- 如下,API 帮助文档中表示 equals 方法推荐覆盖
2.1、比较字符串
因为 String 类中的 equals 方法已经被 sun 公司覆盖重写,所以比较的是双方的内容
sun公司 重写的 String 类中的 equals 方法如下:
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;
}
}
return false;
}
最后
光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性
Java面试宝典2021版
最常见Java面试题解析(2021最新版)
2021企业Java面试题精选
81292)]
[外链图片转存中…(img-H7tvgLmT-1714206081293)]
2021企业Java面试题精选
[外链图片转存中…(img-59fEhK81-1714206081294)]
[外链图片转存中…(img-k3QUYk91-1714206081294)]