Java 内存地址相关的问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 17:01:54
我想知道Java中什么是内存地址
我知道==比较的内存地址,那么怎么区分内存地址相同步相同哈

java中有8中基本数据类型(byte,short,int,long,float,double,char,boolean),它们存在栈(内存的一部分,只存放固定大小的数据)中。
例子:
int a=1;
int b=2;
这时a==b比较的是a和b的值而不是它们的地址。其他基本数据类型相同。至于a和b的地址是否相同如何比较,那是很明显的问题。不同。

除了这8中基本数据类型,其他的数据类型都放在堆中。
这些数据类型都是这样存储的:
用new 运算符在堆中开辟空间并初始化。在栈中存放一个引用类型的变量指向该空间。
例子:
//A是一个类
A a=new A();
A b=new B();
a放在栈中,是一个引用变量。指向堆中新建的A对象。
此时a==b比较的就是地址了。(说明白点a和b存储的都是地址值)。
至于地址相同不相同,就如楼上说的,看返回结果喽,true相同,false就不同呗。
总结,==比较的是变量中存储的值。而不是什么内存地址。

用==比较结果是true就是相同的了!