A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯佩 中级黑马   /  2013-2-16 10:39  /  1171 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

内存的问题有时看似简单却不容易想明白,都知道new出来的实体对象都存放在堆内存中,但不是直接new出来的而是通过方法返回的对象在内存中存放在什么位置呢?比如说Byte[] bytes = abcdef".getBytes();中bytes所引用的对象实体也是存放在堆内存中吗?Date d = new Calendar().getTime();这句代码产生Date对象的原理是不是相当于在getTime()方法中封装了new 的动作,类似于return new Date()吗?如果是,那么代码Console  con = System.console();通过系统类调用静态方法返回的对象的所属类Console是没有构造函数的,这个被返回的对象在内存中又是怎样的呢?

1 个回复

倒序浏览
      呵呵,朋友这只是你的一种误解罢了。实际的对象始终是放在堆内存中的。只是建立对象的方法不止一种。new是一种,单例中的静态方法获取是一种,反射中也可以动态创建对象等。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马