为了账号安全,请及时绑定邮箱和手机立即绑定

Java中用循环来这样创建对象,不是应该引用重名报错吗?为什么不报?

Java中用循环来这样创建对象,不是应该引用重名报错吗?为什么不报?

慕神8447489 2019-03-27 14:18:13
循环第二次的时候,就有一个重名的my了呀?为什么还是能正常运行,不报错?
查看完整描述

5 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

你的my定义的是局部变量,每执行一次for循环都重新定义了变量。
即使你把变量放在循环外面定义,java中不会报错,只是变量存的地址会覆盖掉之前的变量。

查看完整回答
反对 回复 2019-04-22
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

直接上代码:


public class Test {

    public static void main(String[] args) {

        for (int i = 0; i < 3; i++) {

            Thread thread = new Thread();

            thread.start();

            System.out.println(thread.getName());

        }

    }

}


// 运行结果:

// Thread-0

// Thread-1

// Thread-2

如果你要指定名字,你应该这样来做:


public class Test {

    public static void main(String[] args) {

        Thread thread = new Thread("我的线程");

        thread.start();

        System.out.println(thread.getName());

    }

}


//运行结果:

//我的线程


查看完整回答
反对 回复 2019-04-22
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

my指向不同的MyThread实例对象罢了

my ⇢ new MyThread() //老的
↘ new Mythread() //新的


查看完整回答
反对 回复 2019-04-22
  • 5 回答
  • 0 关注
  • 944 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信