Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Как сравнить строку с null


Автор: vzf 24.9.2005, 12:43
Подскажите, пожалуйста как сравнить строку с null.
У меня сервер отправляет null клиенту. Клиент принимает и не подрубает, что это null.
сервер:
Код


PrintWriter out = new PrintWriter(new BufferedWriter(
                            new OutputStreamWriter(socket.getOutputStream())),
                            true);
String mstr = null;                            
out.println(mstr);



клиент:

Код


String str = new String();

BufferedReader in = new BufferedReader(new InputStreamReader(socket
                    .getInputStream()));

while ((str = in.readLine()) != null ){

// почему-то входит даже когда str = null

    System.out.println("str = " + str); //здесь выводится, что str = null

    if (str == null) { // а сюда не входит (str.equals(null) тоже пробовал)
        System.out.println("break");
                            break;
    }
                        

}


В чем дело? Может условие в while() не правильно записано. Помогите разобраться.

Автор: LSD 24.9.2005, 13:08
Дело не в while, дело в PrintWriter, когда ты вызываешь out.println(mstr); то выполняется такой код:
Код
public void print(String s)
{
  if(s == null)
  {
    s = "null";
  }
  write(s);
}

т.е. прост переадется строка "null", а не реальный null. Это во первых.

А во вторых как ты себе представляешь передачу 0 байт? Метод in.readLine() заблокируется до тех пор пока не будет полученна строка или достигнут конец потока.

Автор: vzf 25.9.2005, 15:01
Да я понял, в чем дело. Если исправить на "null" , то все работает. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)