2015-05-31 35 views
0

我正在使用readline()方法讀取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部分。儘管輸入流的第一個值是「hey」,而第二個值不是。所以我期待在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")走錯了。謝謝!

+0

比較字符串時使用'equals' – copeg

回答

1

您必須使用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的優勢。

+0

我試過了,然後它給了我NPE –

+0

好了現在它工作了......謝謝 –