在java 中定义三个int变量 分别是 a b c 而且值都等于3 那么a b c都指向同一个内
在java中定义三个int变量分别是abc而且值都等于3那么abc都指向同一个内存地址吗?...
在java 中定义三个int变量 分别是 a b c 而且值都等于3 那么a b c都指向同一个内存地址吗?
展开
展开全部
不是,是三个逻辑意义上不同的地址。不同的变量,是互相独立的,与他们的值相不相同没有任何关系。就像,两个人,名字相同,但各是各。这应该是所有程序语言的基本规律。
更多追问追答
追问
那我问你java中==运算符比较的是什么? 比较的是内存地址 还是内存地址的值??
追答
==对于普通的非引用类型(基本类型)比较的是两个变量的值是否相同,比方说两张不同的纸,比较一下两张纸是不是一模一样(相对需求来说的相同与否)。比如说 int 变量 a的值是5,b的值也是5,那么比的是5==5,但a和b还是不同的变量,只是值(内存地址上的值)相同
展开全部
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 也是这种情况。
如果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 也是这种情况。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同一个地址。
Java中分为栈内存(存放局部变量,也就是你说的a、b、c)和堆内存(存放new出的对象、代码、static变量和常量池(你说的3就是常量)),也就是说常量3只在内存中存了一次。
Java中分为栈内存(存放局部变量,也就是你说的a、b、c)和堆内存(存放new出的对象、代码、static变量和常量池(你说的3就是常量)),也就是说常量3只在内存中存了一次。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
基本数据类型是直接存在栈里面的,对象是存在堆里面的,栈是具有共享特性的,所以3这个数字是公用的。
追问
哦哦 那么abc都指向同一个地址 是对的吗。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java基本类型 赋初值时指向堆中的常量内存 所以是同一地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询