1

我正在学习使用 Java 进行 TCP 和 UDP 套接字编程,我正在为我的网络课程阅读的其中一本书有以下内容:

DatagramPacket receivedPacket = new DatagramPacket(receiveData, receiveData.length);

String modifiedSentence = new String(receivedPacket.getData());

receivedPacked 只是一个 DatagramPacket 类型的对象,modifiedSentence 存储从服务器返回的内容。在这种情况下,ReceivedPacket.getData() 在存储之前将数据包从字节转换为字符串。

我的问题是为什么要创建一个字符串对象并将转换后的数据包存储/传递给它,而不是使用以下内容:

String modifiedSentence = receivedPacket.getData();

这行不通吗?我认为在 Java 中专门创建 String 类的对象是不切实际的。

4

2 回答 2

2

DatagramPacket.getData()返回字节数组而不是字符串。因此,您需要将其转换为字符串以将其分配给字符串。

于 2013-02-19T22:12:52.290 回答
0

String modifiedSentence = new String(receivedPacket.getData())

反正那是错的。它应该是

String modifiedSentence = new String(receivedPacket.getData(), 0, receivedPacket.getLength())

我的问题是为什么要创建一个字符串对象并将转换后的数据包存储/传递给它,而不是使用以下内容:

String modifiedSentence = receivedPacket.getData();

因为它不编译。getData()返回byte[],而不是String

我认为在 Java 中专门创建 String 类的对象是不切实际的。

只有当参数已经是 aString.在这种情况下它不是。

于 2013-02-19T22:39:44.203 回答