gpt4 book ai didi

java - 为什么java中的while循环会运行?

转载 作者:行者123 更新时间:2023-12-01 14:51:26 25 4
gpt4 key购买 nike

更新:我是个白痴。服务器有一行 out.println((String) null);客户端过去知道何时停止并断开连接。事实证明该行是不必要的,可能是“null”的来源(我不知道 tat 是如何变成字符串的,但是......)但是谢谢大家的帮助!

我正在编写一个客户端-服务器程序,其中客户端一旦服务器发送 null 就终止。有问题的循环是:

while ((message = in.readLine()) != null) {
System.out.println("C: Recieved " + message + " from server");
}

输出为:

C: Recieved Hi from server
C: Recieved null from server

服务器发送 null发送 hi 后、调用 close() 之前发送给客户在客户端上。我可能应该早点提到这一点,但我正在使用 java.net 中的 Socket 和 ServerSocket 类。但是为什么 while 循环运行两次,即使消息是 null 也进入?

编辑:服务器发送空值的行是 out.println((String) null); 。它会转换为字符串“null”吗?

最佳答案

字符串 “null” 与值 null 不同。当没有更多数据时,readline() 返回值 null

根据 Java 文档,readline 返回:

String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached.

如果您的服务器发送字符串“null”,则实际上是非空数据。

关于java - 为什么java中的while循环会运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14796843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com