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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谢波 中级黑马   /  2013-2-21 11:50  /  1811 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 谢波 于 2013-2-21 13:07 编辑

  1. class Demo
  2. {
  3. public static void main(String[] args)
  4. {
  5. new int[]{1,2,3};
  6. new Demo();
  7. }
  8. }
复制代码
如上述代码:
new int[]{1,2,3};编译失败
为什么会这样呢?难道它不是一个对象吗?它在是内存中的那个区域?是堆内存吗?
和new Demo()这样的匿名对象有什么区别呢?
求详解?
如果把new int[]{1,2,3};换成System.out.println(new int[]{1,2,3});就正确了
为什么不能单独存在呢?

点评

如果问题已解决,别忘了将帖子的分类改成【已解决】,谢谢合作~  发表于 2013-2-21 13:01

3 个回复

倒序浏览
new int[]{1,2,3}这句话不知道你要干什么,是定义数组吗?这个不是在建立对象。如果是定义数组应该是:int arr = new int[3];, new Demo()是在建立对象。new int[]{1,2,3};这个编译通不过 错误提示: 不是语句,我学得的也不多,只能为你解决这么多。匿名对象的好处有两个,我也记不太清楚,你自己多看一下视频。一、如果调用一次方法就不用建立对象了,就可以用这个匿名对象,二、可以作为函数的实参进行传递,我记得只有这些了,

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 新人啊,支持一下~

查看全部评分

回复 使用道具 举报
class Demo
  {
   public static void main(String[] args)
   {
    //new int[]{1,2,3};    //这样写是错误的。
   new Integer(829);     //这个可以。此处new了一个匿名内部类。
    /*定义数组的方式:int[] arr = new int[]{1,2,3};
     * 其中arr是该数组的引用。
     */
    new Demo(); //自己调用自己的匿名内部类。 因为没有引用,所以只能使用一次。若以后使用还要再搞一个。
   
    System.out.println(new int[]{1,2,3}); //匿名数组。 输出结果是该匿名数组的hash值。
   }
  }
建议你去了解一下匿名内部类和匿名数组的相关知识。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 很详细

查看全部评分

回复 使用道具 举报
楼上正解,new int[]{1,2,3};   确实不是用new新建了对象,属于语法错误,没有分配内存(没有应用初始化的动作)....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马