将 readline() 的值与字符串进行比较
Comparing the value of readline() to a string
我正在使用 readline()
方法阅读 inputstream
,然后尝试比较它。
代码如下:
//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部分。尽管输入流的第一个值是 "hey" 而第二个不是。所以我期待 logcat "message pushed !!" 和 "message not pushed" 而不是 "message not pushed"
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")
行出了什么问题。谢谢!
您必须使用 equals()
方法比较 String
。 ==
运算符在这里检查引用。像这样比较 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
。
我正在使用 readline()
方法阅读 inputstream
,然后尝试比较它。
代码如下:
//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部分。尽管输入流的第一个值是 "hey" 而第二个不是。所以我期待 logcat "message pushed !!" 和 "message not pushed" 而不是 "message not pushed"
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")
行出了什么问题。谢谢!
您必须使用 equals()
方法比较 String
。 ==
运算符在这里检查引用。像这样比较 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
。