java中创建对象的问题

ByteArrayOutputStreambout=newByteArrayOutputStream();ByteArrayOutputStreambout;这两者有什么... ByteArrayOutputStream bout=new ByteArrayOutputStream();

ByteArrayOutputStream bout;

这两者有什么区别呢?
展开
 我来答
不倒翁_白痴
2013-01-23 · TA获得超过283个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:135万
展开全部
首先要知道Java里object和object variable的区别:
object variable,只是一个变量名,跟其他基本类型的变量名是一样的,只是一个声明,告诉虚拟机程序中可能会用到这个类型的对象,当虚拟机遇到object variable的时候,并不为他分配空间
object,则是实实在在的对象,虚拟机是要在堆上为他分配内存的

在你的问题里,
ByteArrayOutputStream bout;
只是声明了一个 ByteArrayOutputStream类型的variable,虚拟机不会为他分配内存

ByteArrayOutputStream bout=new ByteArrayOutputStream();
则是让bout这个object variable指向了一个实实在在的对象,这个对象存在堆上,占用一定的内存空间
百度网友75bfa5c
2013-01-23 · TA获得超过154个赞
知道小有建树答主
回答量:137
采纳率:66%
帮助的人:78万
展开全部
第一个语句相当于俩个语句合并到了一起:
ByteArrayOutputStream bout;
\\这个是声明一个ByteArrayOutputStream类的对象bout

bout=new ByteArrayOutputStream();
\\这个是将bout对象用ByteArrayOutputStream()构造方法实例化。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdbmfrcjj
2013-01-23 · 超过18用户采纳过TA的回答
知道答主
回答量:135
采纳率:0%
帮助的人:56.4万
展开全部
第一个实例化了,用bout可以直接调用ByteArrayOutputStream中的方法,第二个没有实例化,无法直接调用方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ziluwenjin
2013-02-04
知道答主
回答量:8
采纳率:0%
帮助的人:1.3万
展开全部
第一句 new会在堆内存开辟内存空间;实例化
第二句 仅仅是声明了一个OutputStream类型的变量;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
朝霞之光
2013-01-23 · TA获得超过135个赞
知道答主
回答量:175
采纳率:0%
帮助的人:59.9万
展开全部
前者分配了内存空间
后者没有分配内存空间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Nickelos
2013-01-23
知道答主
回答量:20
采纳率:0%
帮助的人:10.5万
展开全部
new的方式会调用构造函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式