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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邵阳 中级黑马   /  2012-7-9 18:36  /  1374 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

第一个代码:
class  Demo  extends Thread
{
  public Demo(String name)
{
  super(name);
   }
public void run()
{
  for (int i=0;i<60 ;i++ )
  {
   System.out.println(this.getName()+"。。。。Hello World!......"+i);
  }
  
}
}
class  Test
{
public static void main(String[]args)
{
  Demo d1=new Demo("邵阳");
  Demo d2=new Demo("郭圆");
  d1.start();
  d2.start();
  for (int i=0;i<60 ;i++)
  {
   System.out.println("主函数hello....."+i);
  }
  
}
}第二段代码:
class  Demo  extends Thread
{
private String name;
public Demo(String name)
{
    this.name=name;
}
public void run()
{
  for (int i=0;i<60 ;i++ )
  {
   System.out.println(name+"。。。。Hello World!......"+i);
  }
  
}
}
class  Test
{
public static void main(String[]args)
{
  Demo d1=new Demo("邵阳");
  Demo d2=new Demo("郭圆");
  d1.start();
  d2.start();
  for (int i=0;i<60 ;i++)
  {
   System.out.println("主函数hello....."+i);
  }
  
}
}
我疑惑的是两段代码都可以打印出名称,没什么区别啊。
第一段代码打印出的名称是线程名称,那第二段代码打印出的名称难道不是线程名称。

4 个回复

倒序浏览
第一段
class  Demo  extends Thread
{
        public Demo(String name)
        {
                super(name);
        }
其中的super(name) 是调用的父类Thread中的构造函数Thread(String name);
而第二段
class  Demo  extends Thread
{
        private String name;
        public Demo(String name)
        {
                this.name=name;
        }
中的this.name是本类中的,虽然结果都一样,但代码代表的意思不一样。
回复 使用道具 举报
王红潮 发表于 2012-7-9 19:07
第一段
class  Demo  extends Thread
{

哥们我问的问题是
第一段代码打印出的名称是线程名称,那第二段代码打印出的名称难道不是线程名称?



回复 使用道具 举报
第二个只是一个简单的函数调用
回复 使用道具 举报
第一个是线程名称,super调用父类构造方法,this.getname()获取线程名称,获取是对的。
第二个是你传的参数,而且调用的也是参数名,只是你刚好打印的name属性跟Demo d1=new Demo("邵阳");Demo d2=new Demo("郭圆");这传递进去的一样,所以名字也一样。你把第二段代码的构造函数去掉,结果是什么样子?没有getname()方法,打印不出来的。所以第二个打印的,不是线程名称。

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马