将readline()的值与字符串进行比较

时间:2015-05-31 15:19:06

标签: java string sockets inputstream

我正在使用inputstream方法阅读readline(),然后尝试对其进行比较。

代码如下:

//socket is defined before this
InputStream is = socket.getInputStream();

br = new BufferedReader(new InputStreamReader(is));

Line = br.readLine();

    if (Line  == "hey") {
        Log.d("watsapp client tag", "message pushed !!");
        Log.d("watsapp client tag", "" + Line);


    }
   else {

        Log.d("watsapp client tag", "message not pushed");
        Log.d("watsapp client tag", "" + Line);

    }

上面的代码总是执行else部分。虽然输入流的第一个值是“嘿”而第二个不是。所以我期待在logcat“消息推送!!”并且“消息未被推送”而是我得到“消息未被推送”

05-31 14:46:14.309    6138-6151/? D/watsapp client tag﹕ message not pushed
05-31 14:46:14.309    6138-6151/? D/watsapp client tag﹕ hey
05-31 14:46:14.339    6138-6151/? D/watsapp client tag﹕ message not pushed
05-31 14:46:14.339    6138-6151/? D/watsapp client tag﹕ <Messageadded:1112/>

请告诉我if (Line == "hey")行出了什么问题。谢谢!

1 个答案:

答案 0 :(得分:1)

您必须使用String方法比较equals()。这里的==运算符检查引用。比较String(和其他参考类型变量),如下所示 -

String firstString = "someValue";
String secondString = "someValue";

if(firstString.equals(secondString)){
   System.out.println("both string are equals"); 
}else{
   System.out.println("not equals"); 
}  

更新:有时我们会将String类型的变量与String字面值或常量进行比较。然后最好像这样执行检查 -

String str1 = "aString";
String str2 = null;
System.out.println( "aString".equals(str1) ); //true;
System.out.println( "aString".equals(str2) ); //false;  

在第二种情况下,比较这样的优势,你永远不会得到NullPointerException