社区
Java SE
帖子详情
如何判断两个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
打赏
收藏
如何判断两个int型变量是否指向同一内存地址?
String s = "1"; String s1 = "1"; 我们知道,我们可以使用 s==s1; 来判断是否指向同一内存地址。 那么, int i = 1; int j = 1; 如何判断 i 和 j 是指向同一个内存地址? 我们使用 i==j; 只是能比较值是否相等,但是如何判断他们是指向同一个地址? 也就是说 内存里其实只存一个“1”,而不是两个。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
多个指针
指向
同一
内存区实践
在C++Primer中12章讲到内存的动态申请,delete能重复执行,尽量不要将
两个
指针
指向
同一
块申请的内存。写了一段代码来看一下实际情况。
java对象赋值给另一个_4.java里拷贝问题(Java中将一个对象赋值给另一个同类对象,这
两个
对象
是否
指向
同一
堆内存?)...
Java中将一个对象赋值给另一个同类对象,这
两个
对象
是否
指向
同一
堆内存?这些都是个问题,最先我都只是大概了解,没有深究,后来也写过一点。1.2发散了一下,java究竟是值传递还是引用传递?最终发现这个问题是在算法与数据结构里的知识,关于单链表,详情请看算法数据结构里单链表的文章。//修改节点的信息,根据no修改,即no不能改变//根据新的节点 no修改public void update(Hero...
Python 不同类
型
变量
指向
同一
引用地址时的可变与不可变
引出问题 示例代码 s1 = 'abc' s2 = s1 s2 = s2.replace('a', 'b') pr
int
(s1) # 运行结果: abc list_1 = ['a', 'b', 'c'] list_2 = list_1 list_2.remove('a') pr
int
(list_1) # 运行结果: ['b', 'c'] 字符串类
型
和列表类
型
中的
两个
变量
都
指向
同一
地址时,当修改其中一个
变量
的内容,字符串类
型
的另一个
变量
值不变,而列表类
型
的另一个
变量
值却发生改变。 解释 内容不可变的类
c++
指向
同一
地址的指针 和 指针的引用
一
指向
同一
地址的指针 po
int
er *p1; po
int
er *p2; p2=p1; ⭐ p2=p1是让p2和
指向
同一
内存空间,但如果后续p1地址变了,p2的地址不会随之改变。是浅拷贝 总结:不要让
两个
指向
同一
地址的指针同时操作这个内存空间,会出错 例1 BstNode* p1=tree->GetRoot();//p1=null BstNode* p2 = p1;//p2和p1
指向
同一
地址空间 null cout << p1->data;//地址为0153F308
两个
数组
指向
了
同一
内存地址
array1和array2记录着地址,
指向
的是
同一
堆内存中的地址,对其中任何一个值进行改变都将直接改变所
指向
地址中存的值,所以一般不会这样对数组进行复制,会出现意想不到的问题。
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章