菜鸟一枚,如果问题问的不恰当请各位轻喷。
第二次编辑:抱歉各位!我似乎误导了大家!
在学习客户端与服务器端的通信时,当中这么一段代码:
while(true){
//等待客户端的连接
socket = serverSocket.accept();
//创建一个新的线程
ServerThread serverThread = new ServerThread(socket);
//启动线程
serverThread.start();
}
我想问:为什么一个同名对象能一直被new出来(当客户端建立起一个连接时)?比如这个serverThread。
但是如果我这么写:
while(true){
//等待客户端的连接
socket = serverSocket.accept();
//创建一个新的线程
ServerThread serverThread = new ServerThread(socket);
ServerThread serverThread = new ServerThread(socket);
//启动线程
serverThread.start();
}
我知道这是错的,new相同名字的对象是不可以的。
但是在无限循环中,也是在不停的new出对象啊,ServerThread serverThread = new ServerThread(socket);
不停的被执行,serverThread不停的创建..这样为什么可以呢?
对象有作用域,像第一个循环里的serverThread在结束一次循环时候就会被销毁,也就是在while(true){…}的“{”和“}”之间属于一个作用域。