java下面程序 class A{} public class B{ A a;⼀⼀是不是a并没有分配存储空间 a= new A();⼀⼀这里才分配

2024年12月04日 04:32
有5个网友回答
网友(1):

看起来楼主在像 C/C++ 一样思考,抽象类型 new 后才分配内存,基本类型就像 C/C++ 一样,说起数组在 Java 中算是基本类型,但却依然需要 new 一下才行。在 Java 中返回后的东西,跟指针和引用都有些相似,更像 C++ 里面的引用吧。就是用一个符号表示,但不是指针。因为我们不需要知道 Java 对象的大小和在内存的位置。所以你不可能直接从 Java 这边知道它在什么地方。我们也不需要知道,那是 JVM 的事情。

我上次在 IBM 网站上看到一篇文章介绍 Java 中对象大小是怎样计算出来的。不过忘记了链接。通过把一个对象拆成 int 这些基本类型来计算出大小来,外加些系统内部使用的空间。

网友(2):

恩恩,你说的是对的~!不过呢,你的声明不规范,一般应该是A a=null;这样声明才是正确的

网友(3):

你太聪明了.就是这个意思! new 的时候才会创建一个对象并分配空间!

网友(4):

是的 在java里要想定义一个对象来实现调用,必须用new申请一个空间,这和c/c++是一样的,

网友(5):

A a;就是定义了,但是没有分配空间。

new了之后,才分配存储空间。