【Java】比较两个变量是否相等 什么时候用“==” 什么时候用“equals”
public static void main(String[] args) { Integer a = new Integer(1); Integer b = new Integer(1); System.out.println(a == b); // false(==:对比的是两个变量的内存地址,) System.out.println(a.equals(b)); // true System.out.println("============================="); Integer aa = 1; Integer bb = 1; System.out.println(aa == bb); // true System.out.println(aa.equals(bb)); // true /** * 总结 * * java与python的“==”,刚好相反 * * Java * “==”:对比的是内存地址 * “equals”:对比的是值(如Integer的equals是把对象转换为Integer类型然后再通过Integer类的intValue方法取值) * * Python * “==”:对比的是值 * “is”:对比的是内存地址 * */ }
备注:java基本数据类型(4类8种)
|
类型 |
默认值 |
整数类型 |
byte |
0 |
short |
0 |
|
int |
0 |
|
long |
0L |
|
浮点类型 |
float |
0.0f |
double |
0.0d |
|
字符类型 |
char |
'u0000' |
布尔类型 |
boolean |
false |
"==":对比的是两个变量(对象)的内存地址
"equals":对比的是两个变量(对象)的值(只有封装后对象才会有equals方法)
总结:
1、如果两个变量是基本数据类型(如int、char等),则直接用"=="对比是否相等即可,因为他们的值是一个常量,在内存中的地址是一样的(值一样的常量在内存中的地址也是一样的)
2、如果两个变量是封装后的数据类型(如Integer、String等),则用"equals"对比是否相等,因为他们是属于不同的对象,虽然值可能是一样的,但这两个对象在内存中的地址肯定不一样
如果忍耐算是坚强 我选择抵抗 如果妥协算是努力 我选择争取