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

 我来答
jamxval
2013-01-29 · TA获得超过6821个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1372万
展开全部
看起来楼主在像 C/C++ 一样思考,抽象类型 new 后才分配内存,基本类型就像 C/C++ 一样,说起数组在 Java 中算是基本类型,但却依然需要 new 一下才行。在 Java 中返回后的东西,跟指针和引用都有些相似,更像 C++ 里面的引用吧。就是用一个符号表示,但不是指针。因为我们不需要知道 Java 对象的大小和在内存的位置。所以你不可能直接从 Java 这边知道它在什么地方。我们也不需要知道,那是 JVM 的事情。

我上次在 IBM 网站上看到一篇文章介绍 Java 中对象大小是怎样计算出来的。不过忘记了链接。通过把一个对象拆成 int 这些基本类型来计算出大小来,外加些系统内部使用的空间。
chried
2013-01-29 · TA获得超过844个赞
知道小有建树答主
回答量:1086
采纳率:0%
帮助的人:485万
展开全部
恩恩,你说的是对的~!不过呢,你的声明不规范,一般应该是A a=null;这样声明才是正确的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sayallleo
2013-01-28 · TA获得超过107个赞
知道小有建树答主
回答量:99
采纳率:0%
帮助的人:86.6万
展开全部
你太聪明了.就是这个意思! new 的时候才会创建一个对象并分配空间!
追问
那么new返回的是什么值?起始地址?
那么对于java多态性用基类创建子类比如:
class C extends A{}
public class B{A a;
a=new C();//这里a的大小是多大?是class A的大小还是class C的大小呢?
}
追答
因为c继承了A, 也就是C中同样可以有A的属性和方法.new的时候.比如 C会大.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刚占慧
2013-01-28 · 超过13用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:32.4万
展开全部
是的 在java里要想定义一个对象来实现调用,必须用new申请一个空间,这和c/c++是一样的,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-01-29
展开全部
A a;就是定义了,但是没有分配空间。

new了之后,才分配存储空间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式