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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 骄傲的倔强 中级黑马   /  2014-1-15 17:17  /  1198 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

不知道为什么以下的代码可以正常运行,System里面的不是匿名对象吗?   匿名对象不是只能使用一次吗?
为什么可以连续使用,可以调用getName方法~


  1. class Demo
  2.         {
  3.                 private String name;
  4.                 private static int count = 0;
  5.                 public Demo()
  6.                 {
  7.                         count++;
  8.                         this.name = "Demo-" + count;
  9.                 }
  10.                 public Demo(String name)
  11.                 {
  12.                         this.name = name;
  13.                 }
  14.                 public String getName()
  15.                 {
  16.                         return this.name;
  17.                 }

  18.         }
  19.         public class StaticDemo
  20.         {
  21.                 public static void main(String args[])
  22.                 {
  23.                         System.out.println(new Demo().getName());        
  24.                         System.out.println(new Demo("ZHANGSAN").getName());
  25.                         System.out.println(new Demo().getName());
  26.                         System.out.println(new Demo("LISI").getName());

  27.                         }        
  28.                         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 淡定

查看全部评分

6 个回复

倒序浏览
看看你的代码:
System.out.println(new Demo().getName());         
System.out.println(new Demo("ZHANGSAN").getName());
System.out.println(new Demo().getName());
System.out.println(new Demo("LISI").getName());
匿名对象是只能使用一次,你也的确只使用了一次啊,  你的每一条System输出语句里面都有new,说明什么呢?你每次都new了一个匿名对象!
也就是说你这是4个匿名对象,而且每个对象都只使用了一次。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 赞一个!

查看全部评分

回复 使用道具 举报
dapeng111 来自手机 中级黑马 2014-1-15 17:35:09
藤椅
每new一个对象都在堆中创建一个对应的实体,在这里是四个不同的实体,虽然都是匿名的,但是每两个都不一样。
回复 使用道具 举报
强子 发表于 2014-1-15 17:25
看看你的代码:
System.out.println(new Demo().getName());         
System.out.println(new Demo("ZHANG ...

那大神能帮我举个用多次的例子吗?
回复 使用道具 举报
System.out.println(new Demo("LISI").getName());
匿名对象是只能使用一次,你也的确只使用了一次啊,  你的每一条System输出语句里面都有new,说明什么呢?你每次都new了一个匿名对象!
也就是说你这是4个匿名对象,而且每个对象都只使用了一次。


只能使用一次你让我举什么例子?
回复 使用道具 举报
强子 发表于 2014-1-15 18:24
System.out.println(new Demo("LISI").getName());
匿名对象是只能使用一次,你也的确只使用了一次啊,   ...

就是错误的例子啊,我看看错误的是什么样子的,下次就能注意了。
回复 使用道具 举报
因为你每调用一次就等于创建了一个对象 所以对象是可以无限调用方法的 呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马