今天下午遇到一个问题
:两个相等的整数相比结果返回false,像t2==t3这样,打印t2,t3的值相同都是283,结果就不一样呢?下面我们来看这例子:
public static void main(String[] args) {
int t1=1;
Integer t2=1;
Integer t3=new Integer(1);
System.out.println(t1==t2);
System.out.println(t1==t3);
System.out.println(t2==t3);
System.out.println(t2.equals(t3));
}
以上结果:
true
true
false
true
结果怎么会是这样呢?t2==t3怎么是false它们明明是1?这是因为t2,t3都是引用类型的数据==操作符比较的是t2、t3引用类型变量在栈中存储的值,即引用地址是否相同。故t2==t3打印出false。t1==t2为什么是true呢?因为当一个int基本数据类型和它的包装类进行比较时,包装类会自动解包成相同类型进行比较。equals则是比较两个引用类型的变量引用的地址中存储的是否相同,相同返回true,不同则为false。
知识水平有限,理解可能不到位,欢迎指正。
分享到:
相关推荐
Java 中的变量可以分为两种:值类型和引用类型。值类型的变量直接存储在栈中,而引用类型的变量在栈中仅仅存储引用类型变量的地址,而其本身则存储在堆中。 equals 操作表示的是两个变量是否是对同一个对象的引用,...
在 Java 中,变量可以分为两种:基本类型(primitive type)和引用类型(reference type)。基本类型的变量直接存储在栈中,而引用类型的变量在栈中仅仅存储了对象的引用,而对象本身存储在堆中。 ==运算符比较的是...
在 Java 中,有两种数据类型:基本数据类型和引用数据类型。基本数据类型共有 8 种,包括四种整数类型(byte、short、int、long)、两种浮点数类型(float、double)、一种字符类型(char)和一种布尔类型(boolean...
当用于基本数据类型时,它比较的是两个操作数的值是否相等;而当用于引用类型时,它比较的是两个引用是否指向内存中的同一对象。 ##### 示例: ```java int a = 5; int b = 5; System.out.println(a == b); // ...
Java教程中的核心知识点主要涉及Java的基本数据类型、引用类型、常用包、对象的内存分配以及字符串操作。下面将对这些内容进行详细的阐述。 1. **基本数据类型与引用类型** - Java的基本数据类型包括布尔型`...
在Java编程语言中,了解如何正确使用`==`和`equals()`方法是非常关键的,因为它们在比较对象和基本类型时有不同的行为。下面将详细解释这两个方法的工作原理、使用场景以及一些常见误区。 首先,`==`运算符主要用于...
Java 是一种面向对象的编程语言,其中有两种数据类型:基本数据类型和引用数据类型。基本数据类型包括整数类型、浮点数类型、字符类型、布尔类型等,共有八种;而引用数据类型则包括 String、数组、类等。 在 Java ...
在Java中,`==`用于比较基本类型(如int、char、boolean)的值,以及引用类型的地址。对于基本类型,它直接比较数值;而对于引用类型,`==`比较的是两个变量是否指向内存中的同一个对象实例。例如,如果你有两个字符...
总的来说,`equals()`和`==`在Java中扮演着不同的角色。`==`关注对象的引用,而`equals()`(尤其是被重写后)则关注对象的实质内容。在日常开发中,根据需要选择适当的比较方式,可以避免很多不必要的错误。
在Java中,`==`和`equals`是两种不同的比较方法,前者比较引用地址,而后者比较对象的实际内容。 首先,让我们来看看`==`运算符的用法。`==`运算符可以用来比较基本数据类型和引用类型。对于基本数据类型,如`int`...
== 比较的是栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址 equals:在Object中模式采用==比较,通常会重写 String对象重写了 equals,比较的是变量值 从上面我们笼统的来说明了一下两者的不同,...
对于基本数据类型(如 int、double、char),`==` 直接比较它们的值是否相等。而对于引用类型(如对象),`==` 比较的是它们在内存中的引用地址,也就是说,它检查两个引用是否指向同一个对象实例。 例如,当我们...
虽然两者都可以用于比较,但它们有着本质的区别,特别是在比较对象和基本数据类型值时。 首先,我们来了解"=="运算符。在Java中,"=="运算符用于比较两个对象的引用是否指向同一个实例,或者比较两个基本数据类型的...
"Java中equals、hashcode和==的区别" Java 中 equals、hashcode 和==的区别是 Java 编程语言中一个经常遇到的问题。这三个概念都是用来比较对象的,但是它们之间存在着本质的区别。 首先,==号是Java中的一个...
== 操作符通常用于比较基本数据类型、枚举类型或对象的引用。 例如,在 Java 中,以下代码将比较两个字符串变量的值是否相同: ```java String s1 = "Monday"; String s2 = "Monday"; if (s1 == s2) { System.out....
在Java编程语言中,`==`和`equals()`方法是用来比较对象之间关系的两种常见方式,但它们在使用上有着显著的区别。 首先,`==`运算符主要用于比较基本类型(如int、char、byte等)的值是否相等,或者比较引用类型...
在Java程序设计中,基本数据类型和基本操作是编程的基础。本篇将详细阐述这些关键概念。 2.1 引言 在Java中,程序是由数据和对数据进行操作的指令组成的。基本数据类型是构建程序的基础,它们包括数值、字符和布尔...