我是java的初学者!!我的doublt是关于对象的=和新操作符

我是java的初学者!!我的doublt是关于对象的=和新操作符,java,oop,Java,Oop,为了保持简单,我只写了3行代码(实际上不是没有corect语法的代码) 对于a类,我们正在创建对象 A a1 = new A(); A a2; a2 = a1; a2=a1中的=实际做什么?? 在上一行之前,没有为a2分配内存,因为我们没有使用新的运算符!!如果我错了,请指出 我们可以考虑对象的引用是否与它的地址相同?(引用=指针)< /P> 你能纠正我吗??我在谷歌上搜索了一下,得到了一些复杂的答案,无法理解他们到底想说什么!! 他们引用我们不能用参考资料做arthmetic,但可以用指针!

为了保持简单,我只写了3行代码(实际上不是没有corect语法的代码)

对于a类,我们正在创建对象

A a1 = new A();
A a2;
a2 = a1;
a2=a1中的=实际做什么?? 在上一行之前,没有为a2分配内存,因为我们没有使用新的运算符!!如果我错了,请指出

我们可以考虑对象的引用是否与它的地址相同?(引用=指针)< /P> 你能纠正我吗??我在谷歌上搜索了一下,得到了一些复杂的答案,无法理解他们到底想说什么!! 他们引用我们不能用参考资料做arthmetic,但可以用指针!但他们都有相同的基本概念-地址 所以我认为他们的意思是一样的

接下来,我们使用=运算符将a1的引用传递给a2 当没有为a2分配内存时,该引用(地址)存储在何处


如果正在分配内存,如何分配

指针和引用不相同。两者之间有区别。 =和new也不相同。 new为对象分配内存。=没有

引用可以存储在JVM分配的表中,它本身不需要内存分配。而new Object()存储在JVM的内存堆中


引用和指针(在C语言中)在引用对象的方式上是相似的。但这并不意味着这些是同一件事。JVM封装了实现细节,这意味着它对程序员隐藏了实现细节。程序员不必知道对象是如何存储的。他没有指向数据的指针。相反,他有引用来调用对象的方法和数据

你为什么关心内存分配?你的问题是什么?在这个网站和其他地方有很多关于java内存模型的信息。在提出基本问题之前,请阅读并展示一些研究成果。只有
new
在新对象堆上分配内存。变量包含一种引用该堆对象的指针(4字节)。因此,A1和A2共享一个对象。@ LutZurn HORN是如何完成引用的。我的意思是在C++中,我们创建一个指针变量来存储地址,所以基本上我们有一个内存槽来存储地址,这里没有任何内存分配,实际上引用是怎么做的!!!每当您使用
new
关键字声明变量(读取引用)或创建对象时,总是会分配自私内存。您能告诉我这属于java的哪个主题吗!!我想在死后经历这一切!!这样事情就清楚了。提前感谢这可能会有帮助。2) 为初学者阅读一些java书籍。