为了保持简单,我只为代码写了3行(实际上不是没有corect语法的代码)
对于A类我们正在创建对象
A a1 = new A();
A a2;
a2 = a1;
究竟做了什么=在a2 = a1做了什么? 直到上一行没有为a2分配内存,因为我们没有使用new运算符!请指出我错了吗?
我们可以认为对象的引用与其地址相同(引用=指针)
无论如何,你能纠正我吗?我用谷歌搜索了它,得到了一些混合答案,无法理解他们究竟要说些什么! 他们引用我们无法用引用做关节,但可以用指针!但他们都有相同的基本概念 - 地址 所以我认为他们都意味着同样的事情接下来我们使用=运算符将a1的引用传递给a2 当没有为a2分配内存时,这个引用(地址)存储在哪里?
如果正在分配内存,它是如何完成的?
答案 0 :(得分:0)
指针和参考不相同。两者之间存在差异。 =和新也不一样。 new为对象分配内存。 =没有。
引用可以存储在JVM分配表中,并且不需要为自己分配内存。而新的Object()存储在JVM的内存堆中。
引用和指针(在C语言中)类似于引用对象的方式。但这并不意味着这些都是一回事。 JVM封装了实现细节,这意味着它隐藏了程序员的实现细节。程序员不必知道如何存储对象。他没有指向数据的指针。相反,他参考了调用对象的方法和数据。