如何判断两个int型变量是否指向同一内存地址?

chongan_wang 2010-04-14 05:33:41
String s = "1";
String s1 = "1";
我们知道,我们可以使用 s==s1; 来判断是否指向同一内存地址。

那么,

int i = 1;
int j = 1;

如何判断 i 和 j 是指向同一个内存地址?
我们使用 i==j; 只是能比较值是否相等,但是如何判断他们是指向同一个地址?

也就是说 内存里其实只存一个“1”,而不是两个。
...全文
648 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
笑是我的药 2010-12-02
  • 打赏
  • 举报
回复
恩~来看看
ZangXT 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 gysgogo 的回复:]
今天老师又这样讲了,而且网上也有很多人这样说,
我感觉这个问题有争议,
谁拿出一个有信服力的证据
[/Quote]
http://blog.csdn.net/ZangXT/archive/2009/08/05/4410246.aspx
gysgogo 2010-04-20
  • 打赏
  • 举报
回复
今天老师又这样讲了,而且网上也有很多人这样说,
我感觉这个问题有争议,
谁拿出一个有信服力的证据
CVA4508M 2010-04-15
  • 打赏
  • 举报
回复
int i = 1;
int j = 1;

如何判断 i 和 j 是指向同一个内存地址?

楼主概念错误了,int i; 和 String str; 是完全不同的,
str是引用,于是指向一个对象
而i不是引用,故不存在“指向”这一说法。
xiao_kan_hong_chen 2010-04-15
  • 打赏
  • 举报
回复
如果只是基本类型如:int i = 3; int j = 5;的话不存在内存地址这一说.只能是包装类类型,即
Integer i = 3; Integer j = 3; 这时就可以判断: i == j 答案是true因为它和String类型一样先在池中分配空间.
nanjiwubingqq 2010-04-15
  • 打赏
  • 举报
回复
INT是基本类型撒
捏造的信仰 2010-04-15
  • 打赏
  • 举报
回复
无法比较。Java 语言不操作内存。
qjtttt 2010-04-15
  • 打赏
  • 举报
回复
忘记引用了- -

[Quote=引用 8 楼 gysgogo 的回复:]
先要java存储原理 给你个例子 如声明int i=1,现在虚拟机内存中找一个地址中的内容是否==1;
如果==则i指向;否则新建个地址指向这个地址;所以 i 与j 指向同一个地址

我想java运行慢这也许就是个原因;

呵呵,老师这两天刚讲的,没想到用上了;
[/Quote]
qjtttt 2010-04-15
  • 打赏
  • 举报
回复
java- - 基本类型。。。。比较撒子-。-?你们老师就差没教你们用java去比较寄存器的值了
mf0606 2010-04-15
  • 打赏
  • 举报
回复
晕了……


看不明白
soli11722984 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 luomf 的回复:]
引用 16 楼 xiao_kan_hong_chen 的回复:
如果只是基本类型如:int i = 3; int j = 5;的话不存在内存地址这一说.只能是包装类类型,即
Integer i = 3; Integer j = 3; 这时就可以判断: i == j 答案是true因为它和String类型一样先在池中分配空间.

也不完全对,大家可以试验一下以下程序片段
// ……
[/Quote]
然后,麻烦去看看源码,这个是JAVA做了优化
luomf 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 xiao_kan_hong_chen 的回复:]
如果只是基本类型如:int i = 3; int j = 5;的话不存在内存地址这一说.只能是包装类类型,即
Integer i = 3; Integer j = 3; 这时就可以判断: i == j 答案是true因为它和String类型一样先在池中分配空间.
[/Quote]
也不完全对,大家可以试验一下以下程序片段
// -128 到 127 为true,其它为false
for (int i = -256; i <= 256; ++i)
{
Integer i7 = i;
Integer i8 = i;
System.out.println("i:" + i + "||" +(i7 == i8));
}
cwjieNo1 2010-04-15
  • 打赏
  • 举报
回复
int i = 1;
int j = 1;
int是属于基本数据类型,不存在内存地址
J79091304 2010-04-14
  • 打赏
  • 举报
回复
HashCode()可以么
WuBill 2010-04-14
  • 打赏
  • 举报
回复
正是悲剧啊
lonefeifei 2010-04-14
  • 打赏
  • 举报
回复
怎么个意思
yueguangkai001 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gysgogo 的回复:]
先要java存储原理 给你个例子 如声明int i=1,现在虚拟机内存中找一个地址中的内容是否==1;
如果==则i指向;否则新建个地址指向这个地址;所以 i 与j 指向同一个地址

我想java运行慢这也许就是个原因;

呵呵,老师这两天刚讲的,没想到用上了;
[/Quote]

悲剧的娃娃
justlearn 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gysgogo 的回复:]
先要java存储原理 给你个例子 如声明int i=1,现在虚拟机内存中找一个地址中的内容是否==1;
如果==则i指向;否则新建个地址指向这个地址;所以 i 与j 指向同一个地址

我想java运行慢这也许就是个原因;

呵呵,老师这两天刚讲的,没想到用上了;
[/Quote]
如果你确定你的老师说的是int。。。。。那么你的老师实在是。。。。
ZangXT 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gysgogo 的回复:]
先要java存储原理 给你个例子 如声明int i=1,现在虚拟机内存中找一个地址中的内容是否==1;
如果==则i指向;否则新建个地址指向这个地址;所以 i 与j 指向同一个地址

我想java运行慢这也许就是个原因;

呵呵,老师这两天刚讲的,没想到用上了;
[/Quote]
碰上这么搓的老师,倒霉。
退学费吧
ypb362148418 2010-04-14
  • 打赏
  • 举报
回复
Java操作内存不行啊,还是用c试试吧
加载更多回复(8)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧