int a= new int(); int b= new int(); a=b=1 为什么i.equals(b)失false
时间: 2023-05-25 14:05:17 浏览: 68
因为i和b是两个不同的对象,它们在内存中拥有不同的地址。当你使用“==”运算符比较两个对象时,它会比较它们在内存中的地址。因此,i.equals(b)返回false,因为它们是不同的对象。
另外,对于基本类型(如int),使用“==”运算符可以比较它们的值。所以,如果你要比较a和b的值是否相等,可以使用a==b。
相关问题
java中 int比较用==还是equals
在Java中,对于基本数据类型`int`,比较通常使用`==`,因为`==`比较的是两个数值是否相等。
而对于对象类型的`Integer`,比较应该使用`equals()`方法,因为`Integer`是一个类,使用`==`比较的是两个对象在内存中的地址是否相同,而不是它们所包含的数值是否相等。
举个例子,如果有如下代码:
```
int a = 5;
int b = 5;
Integer c = new Integer(5);
Integer d = new Integer(5);
```
那么`a==b`的结果是`true`,因为`a`和`b`都是基本数据类型,比较的是它们的数值是否相等。
而`c==d`的结果是`false`,因为`c`和`d`是两个不同的对象,它们在内存中的地址不同。
但是`c.equals(d)`的结果是`true`,因为`equals()`方法比较的是两个`Integer`对象所包含的数值是否相等,而不是它们在内存中的地址是否相同。
综上所述,对于基本数据类型`int`,使用`==`进行比较即可,而对于对象类型的`Integer`,应该使用`equals()`方法进行比较。
int num1 = "".equals(s1) ? 1 : Integer.parseInt(s1);
这是一个三目运算符,也称为条件运算符。它的作用是判断字符串 s1 是否为空,如果为空则将 num1 赋值为 1,否则将 s1 转换为整数并赋值给 num1。相当于以下代码:
```
int num1;
if ("".equals(s1)) {
num1 = 1;
} else {
num1 = Integer.parseInt(s1);
}
```