import java.io.*;
  import java.net.*;
  public class MyServer {
  public static void main(String[] args) throws IOException{
  ServerSocket server=new ServerSocket(5678);
  Socket client=server.accept();
  BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
  PrintWriter out=new PrintWriter(client.getOutputStream());
  while(true){
  String str=in.readLine();
  System.out.println(str);
  out.println("has receive....");
  out.flush();
  if(str.equals("end"))
  break;
  }
  client.close();
  }
  }其中Socket client=server.accept();为什么不用new就可以直接用了啊而有的地方需要new  我看了书  书上都没说为什么
请帮我解释下下,谢谢

解决方案 »

  1.   

    accept()方法是ServerSocket的一个方法。server是ServerSocket类型的(ServerSocket server=new ServerSocket(5678);这里new了。 )调用方法返回Socket类型的用client接收.
      

  2.   

    为什么要new ,它只是一个方法,返回一个Socket对象
      

  3.   

    accept()方法返回的是Socket类型的只要定义一个Socket client再赋值(=server.accept();),那么client就被赋值了,指向accept()方法返回的对象所指向的堆内存空间,new也是在堆中开辟一个空间,所以是一样的;
      

  4.   

      public Socket accept() throws IOException {
    if (isClosed())
        throw new SocketException("Socket is closed");
    if (!isBound())
        throw new SocketException("Socket is not bound yet");
    Socket s = new Socket((SocketImpl) null);
    implAccept(s);
    return s;
        }
    这是ServerSocket类的源代码