java基础问题 关于堆栈 基本数据于引用数据类型

来源:百度知道 编辑:UC知道 时间:2024/06/03 12:15:17
之前很多篇文章都说java是没有指针的概念的
但是引用不就是指针吗?它指向一个地址? 怎么说没有指针的概念呢?

还有引用数据类型和 基本数据类型有什么不同呢?
基本数据类型不是对象?
它们是不是没创建一个对象如:
int a=1;
string b="1";

就会在栈里面出现'a'和'b'这2个引用?
然后a指向1 b指向"1"吗?

那a 和 b 就是指针?

还问个问题是不是不管是基本数据类型还是引用数据类型
当你创建的时候 都会在堆栈 里面有相应的 引用 和值?
然后我们通过引用来改变值?

不要再复制粘贴了 我就是看那些复制粘贴的 看不懂
你多复制也没效果 没有针对性 谢谢合作了
摆脱~~~~~~~

int a=1;
string b="1";

基本类型创建在堆栈中,在内存堆里是没有的。也就是说a就是1,1就是a,你改a就是直接改堆栈里的值。
普通对象用new关键字创建在内存堆里,一个指向内存堆地址的指针(java里叫句柄)赋给变量b。你改对象其实改的是内存堆里的内容,指针本身是没有改变的,但是它指向的内存堆里的内容发生变化

关于指针 daodiba3 已经说得很清楚了
关于这两条:
1:int a=1;
2:string b="1";
1 中a是个基本类型,a和它的值‘1’都是放在栈中的
2 对于String类型,如你所写的话 变量名b和值也都是和基本类型一样在栈中的, 它的执行过程是这样的,在栈中创建一个变量b 然后再栈中寻找是否有"1"这个串 如果有 直接将b的引用指向"1",没有的创建一个"1"值,然后引用。
但是如果把string b="1"; 变成String b = new String("1");的话,这里的"1"就是在堆中的具体一块内存了。
所以准确的说 String 这个类型即不属于基本类型,又不属于引用类型

int a=1;
String b="1";
a b 都是个对象
下面 你用 String c=b
c并没有指向b的地址
String b="1";也就是 String b=new String("1");
而是指向b这个对象变量,不是指向了对象b的内存中的地址
也就是说你操作c, b的值不会变
而如果 c是指向b的内存地址 那么 c b 只要改变一个 他们的值都会变
我是这么理解的

int a=1;
a并不是对象,只是一个变量名而已。他的值就是1

而string才是对象,是字符串对象。

首先有个问题你没搞清楚 java所谓的