问答详情
源自:3-3 编程实现基于 TCP 的 Socke t通信之客户端

socket服务器与客户端通信问题------服务器循环接收客户端消息

服务器循环接收部分:String data=null;    while((data=bfr.readLine())!=null) {System.out.println("我是服务器,客户端说:"+data);}

和String data=bfr.readLine(); while((data!=null) 

{System.out.println("我是服务器,客户端说:"+data);}

这两种循环语句表述有什么不同呢?为什么一个只循环读取一次而另一个是无限循环??

提问者:哈哈小魔王 2017-07-28 08:29

个回答

  • 夜观天象
    2018-07-13 16:50:49

    data = bfr.readLine()  在循环外只赋值一次,在循环里赋值多次

  • define_ray
    2017-09-01 10:35:41

    (1)String data=bfr.readLine(); while((data!=null)

    data在while循环之前赋值,并且while循环时没有对其修改,所以while一直循环。

    (2)while((data=bfr.readLine())!=null)

    每次while循环都对data重新赋值为bfr.readLine(),所以读到null时终止循环。

    明白了吗?望采纳。

  • qq_思密达_3
    2017-07-28 10:28:37

    第一个它是data不停改变值,即bfr.readLine()的内容,当bfr.readLine()为null时,赋值给data后,while里面判断语句变为false,就停止循环了;而第二个的bfr.readLine()不为空的值赋值给data后,在循环语句的data!=null就一直为true,所以这个循环语句是无限循环的