Java String等于

时间:2012-10-24 21:39:14

标签: java string equals

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

_socket.receive(receivePacket);

String sentence = new String(receivePacket.getData());

InetAddress IPAddress = receivePacket.getAddress();

int port = receivePacket.getPort();

if(sentence.equals("hello")) (...)

问题:当句子为sentence.equal("hello")时,为什么"hello"不正确?是因为String的构造函数String(byte[])

我可以处理这个问题吗?

由于

3 个答案:

答案 0 :(得分:4)

你的字符串可能包含"hello",但是用其他垃圾填充。你可以试试

if (sentence.trim().equals("hello")) {...}

举例说明:

String s = new String(new byte[]{0, 1, 'h', 'e', 'l', 'l', 'o', 2, 3});
System.out.println(s.equals("hello"));
System.out.println(s.trim().equals("hello"));
false  
true

相关文档

答案 1 :(得分:1)

尝试执行System.out.println ("[" + sentence + "]");或检查调试器中的变量(如果可以) - 您可能会发现该字符串不是您所期望的,例如最后有一个换行符。

String.equals()中出现错误的可能性很小: - )

答案 2 :(得分:0)

这里的数据包是通过套接字接收的。有可能包含额外的空间。我无法模拟场景,因为数据是通过套接字。应用trim()在句子上再试一次。