== 原始数据类型运算符

发布于 2024-11-30 06:06:24 字数 484 浏览 4 评论 0原文

可能的重复:
toString()、==、 equals() 对象方法在引用类型和基本类型上的工作方式不同或相似?

我试图理解 Java 中 == 和 equals to 运算符之间的区别。 例如 == 会检查是否是同一个对象,而 equals 会比较对象的值...那么为什么我们使用 == 来比较 int 等基本数据类型。 因为如果我有

   int i =7; //and 
   int j = 6. 

它们不是同一个对象,并且堆栈中的内存地址也不同。或者 == 对于基元比较的行为是否有所不同??

Possible Duplicate:
How Does the toString(), ==, equals() object methods work differently or similarly on reference and primitive types?

I am trying to understand the difference between == and equals to operator in Java.
e.g. == will check if it is the same object while equals will compare the value of the object ... Then why do we use == for comparing primitive data types like int.
Because if I have

   int i =7; //and 
   int j = 6. 

They are not the same object and not the same memory address in stack. Or does the == behaves differently for primitives comparison.??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一杯敬自由 2024-12-07 06:06:24

实际上,== 对于所有变量的行为都是相同的:它测试这些变量的值是否相等。对于Object objobj 是对象的引用。由于 == 测试两个对象引用是否具有相同的值,因此它正在测试它们是否引用相同的对象(即引用是否相等)。

Actually, == behaves identically for all variables: it tests whether the values of those variables are equal. In the case of Object obj, obj is a reference to an object. Since == tests whether two object references have the same value, it is testing whether they refer to the identical object (i.e., that the references are equal).

秋凉 2024-12-07 06:06:24

== 在原始类型上的直观工作方式有所不同。语言就是这样。

如果您用 C++ 术语来思考,引用就是指针,而 == 进行指针比较。

int* myPtr1 = new int(5);
int* myPtr2 = new int(6);

myPtr1 == myPtr2;

== intuitively work differently on primitive types. Its just that way in the language.

If you think about it in C++ terms, references are pointers and == does pointer comparison.

int* myPtr1 = new int(5);
int* myPtr2 = new int(6);

myPtr1 == myPtr2;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文