先来看下面的一段程序:
Object value1=0;
Integer value2=0;
Long value3=new Long(0);
System.out.println(value1.equals(value2));
System.out.println(value1.equals(value3));
各位在看我下面的答案之前可以先自己判断一下输出的是什么,测试后输出的是:
true
false
为什么是这样的输出,这里面有两点内容:
1、Object value1=0;这样写的话,默认value1的类型就是Integer类型的,各位可以这样输出一下:
System.out.println(value1.getClass());
输出会是:
class java.lang.Integer
2、我们都知道equals比较的是两个对象的内容是否相同,但是要明确一点,这两个对象的类型是要相同的。
根据上面两点的分析,就不难得出上面的输出结果了。
不过对于这个还有一个问题,我没想明白,对于:
Object value1=0;
如果没做特殊的说明,会默认value1是Integer类型的,也就是说value1的取值不能超过Integer的最大值,在MyEclipse中直接书写,超过Integer的最大取值编译是通不过的,会报out of range错误:
但是我这样书写:
Object value1=Integer.MAX_VALUE+200;
这样写为什么可以,而且有输出:
-2147483449
对于这点不是很明白,哪位指导一下。
- 大小: 5.4 KB
分享到:
相关推荐
对于值类型,`==` 运算符和 `equals` 方法都是比较值的大小,而对于引用类型,`==` 运算符比较的是引用是否相同,而 `equals` 方法比较的是值是否相同。 例如: ```csharp int a = 5; int b = 5; bool result1 = a...
这里我们将深入探讨`equals()`方法的用法,以及它与`==`的区别,同时解决题目中提出的问题。 **问题一:** 在Java中,`String`类的实例有两种创建方式。一种是直接通过字面量,如`String s1 = "abc";`,这时字符串...
Java 中的 == 和 equals 方法的区别 在 Java 中,比较值大小有两种方法:...== 用于比较基本数据类型和引用数据类型的值,而 equals 用于比较对象的内容是否相等。在实际开发中,需要根据具体情况选择合适的比较方法。
`long` 类型可以存储更大的值,而 `int` 类型则较小。在处理这两种类型之间的转换时,我们需要注意数据溢出的问题。 1. **向上转换( Widening Conversion)** 从 `int` 转换为 `long` 是一个安全的“向上”转换,...
对于基本数据类型,如`int`、`double`等,`==`运算符比较的是它们的值是否相等。例如,`int a = 5; int b = 5;`在这里,`a == b`将返回`true`,因为它们的值相同。 然而,对于引用类型,如`String`、`ArrayList`等...
Java 中关于 == 和 equal 的区别 及其 equals() 方法重写 Java 语言是 Sun 公司的开发成果,其主要特点是可以执行强,与平台的无关性使其实用性更强。但是 Java 中的 == 与 equal 是有区别的。 == 操作符是 Java ...
对于基本数据类型,equals 方法不能用于比较,因为基本数据类型没有 equals 方法。 对于引用数据类型,equals 方法比较的是对象的值,而不是内存地址。如果两个对象的值相等,那么 equals 方法将返回 true,否则...
在上面的代码示例中,`price` 和 `amount` 都是整型变量,`price.Equals(amount)` 的调用实际上是通过隐式装箱将整型转换为`System.Int32`对象,然后调用`Equals()`方法进行比较。由于 `price` 和 `amount` 都是100...
6. **使用`IEquatable<T>`接口**:对于更复杂的比较逻辑,还可以实现`IEquatable<T>`接口,提供一个只接受类型为T参数的`Equals`方法。这提供了额外的类型安全性,并允许编译器进行更好的类型检查。 在WinForm应用...
举例分析 equals 和 hashcode 方法,hashcode应该怎么样生成 8个基本类型与基本对象的比较:byte与Byte shot与Short int与Integer long与Long float与Float double与Double char与Character
在Java编程语言中,了解如何正确使用`==`和`equals()`方法是非常关键的,因为它们在比较对象和基本类型时有不同的行为。下面将详细解释这两个方法的工作原理、使用场景以及一些常见误区。 首先,`==`运算符主要用于...
但是,这些类也重写了`equals`方法,使其能够比较对象所封装的基本类型的值。 ##### 示例: ```java Integer i = 5; Integer j = 5; System.out.println(i.equals(j)); // 输出 true,Integer类的equals方法比较的...
首先,"=="运算符在Java中主要用于比较基本类型变量的值,如int、char等。当用于比较对象时,"=="实际上比较的是两个引用(内存地址)是否指向同一个对象。因此,如果两个字符串对象的内容相同,但它们在内存中的...
首先,`==`运算符用于基本类型(如int, char, boolean)的比较,以及引用类型的比较。当用于比较基本类型时,它直接比较数值是否相同;而对于引用类型,`==`比较的是两个变量引用的对象是否是同一个实例,也就是说,...
这两个运算符在比较基本数据类型(如int、char)时表现相同,但当涉及到对象时,它们的行为就有所不同。 首先,我们要知道在Java中,值类型(如int、char)是存储在内存的栈中,而引用类型(如类实例)的变量实际上...
例如,在 String 类中,equals 方法用于比较两个字符串的内容是否相同,而不是比较它们的引用。 第二种情况:对于采用哈希算法的集合,集合中对象必须重写 hashCode 方法,同时也要重写 equals 方法。这是因为哈希...
3. **性能考虑**:对于大型对象或复杂类型的比较,应考虑性能问题,尽可能减少不必要的计算。 综上所述,正确地重写`equals`方法对于确保对象的正确比较至关重要,尤其是在涉及到集合框架和其他依赖于对象相等性的...
`==`操作符主要用于比较两个基本类型数据(如int、char等)或引用类型的地址值是否相等。对于基本类型数据,`==`比较的是它们的值是否相等;而对于引用类型,`==`比较的是它们指向的内存地址是否相同,即它们是否...
在Java编程中,正确实现`equals`方法至关重要,它不仅影响对象的比较逻辑,还直接关系到集合类(如`HashSet`、`HashMap`等)的行为。本文将深入探讨Java中`equals`方法的一些常见陷阱,并提供相应的解决方案。 ####...
首先,`==`运算符主要用于比较基本类型(如int、char、byte等)的值是否相等,或者比较引用类型(如对象实例)的内存地址是否相同。当比较基本类型时,`==`直接比较的是它们的值。例如,如果你有两个整型变量`int a ...