在java 中定义三个int变量 分别是 a b c 而且值都等于3 那么a b c都指向同一个内

在java中定义三个int变量分别是abc而且值都等于3那么abc都指向同一个内存地址吗?... 在java 中定义三个int变量 分别是 a b c 而且值都等于3 那么a b c都指向同一个内存地址吗? 展开
 我来答
重明光
2015-04-03 · TA获得超过714个赞
知道小有建树答主
回答量:236
采纳率:50%
帮助的人:40.8万
展开全部
不是,是三个逻辑意义上不同的地址。不同的变量,是互相独立的,与他们的值相不相同没有任何关系。就像,两个人,名字相同,但各是各。这应该是所有程序语言的基本规律。
更多追问追答
追问
那我问你java中==运算符比较的是什么? 比较的是内存地址 还是内存地址的值??
追答
==对于普通的非引用类型(基本类型)比较的是两个变量的值是否相同,比方说两张不同的纸,比较一下两张纸是不是一模一样(相对需求来说的相同与否)。比如说 int 变量 a的值是5,b的值也是5,那么比的是5==5,但a和b还是不同的变量,只是值(内存地址上的值)相同
wly354621
推荐于2017-11-27 · TA获得超过147个赞
知道小有建树答主
回答量:82
采纳率:100%
帮助的人:62万
展开全部
int 是java的基本数据类型;这种类型的定义是通过诸如int a = 3;的形式来定义的。

如果int a =
3;这里的a是一个指向int类型的引用,指向3这个字面值。存在栈中,栈有一个很重要的特殊性,就是存在栈中的数据可以共享。
这里有

int a=3;
int b=3;
int c= 3;

编译器先处理int a =
3;首先它会在栈中创建一个变量为a的引用,然后查找有没有字面值为3的地址,如果没找到,就开辟一个存放3这个字面值的地址,然后将a指向3的地址。
接着处
理int b = 3;在创建完b这个引用变量后,由于在栈中已经有3这个字面值,便将b直接指向3的地址。这样,就出现了a与b同时均指向3的情况。
同理 int c = 3 也是这种情况。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a284221886
2015-04-03
知道答主
回答量:51
采纳率:0%
帮助的人:13.4万
展开全部
同一个地址。
Java中分为栈内存(存放局部变量,也就是你说的a、b、c)和堆内存(存放new出的对象、代码、static变量和常量池(你说的3就是常量)),也就是说常量3只在内存中存了一次。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友27021c1535
2015-04-03 · TA获得超过219个赞
知道小有建树答主
回答量:483
采纳率:66%
帮助的人:171万
展开全部
基本数据类型是直接存在栈里面的,对象是存在堆里面的,栈是具有共享特性的,所以3这个数字是公用的。
追问
哦哦 那么abc都指向同一个地址 是对的吗。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qxl110
2015-04-03 · 超过10用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:23.3万
展开全部
java基本类型 赋初值时指向堆中的常量内存 所以是同一地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式