마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

정말 간단한 문제인데 답이 안나옵니다

0 추천
package kr.ac.jbnu.se.as;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  TextView text = (TextView)findViewById(R.id.textview1);
  String str = text.getText().toString();
  if(str=="Hello world!"){
   Toast.makeText(MainActivity.this, "if가 잘 작동하는군", Toast.LENGTH_SHORT).show();
  }else{
   
  }
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

}

조별 과제때문에 안드로이드를 공부하는 학생입니다.

 

일단은 ADT가 자동으로 생성해주는 Hello world 앱을 이용해서, 자동으로 생성된(Hello world를 출력하는) 텍스트뷰의 내용이 헬로월드인지를 체크해서 맞으면 if가 잘 작동한다는 토스트를 출력하는...

 

분석하기 민망한 수준의 앱인데요.

 

저 if문이 제대로 사용이 안된 것 같습니다... 이건 안드로이드보다는 자바 문법 자체의 문제같은데

 

Toast를 이용해 if문에 전달되는 boolean 값을 조사해본결과 text.getText().toString()=="Hello world!"의 값은 항상 false가 나오더군요...

 

정말 간단한문제인데 해결이 안되어 잠이 안오네요ㅠㅠ 도와주세요

토모히 (320 포인트) 님이 2013년 10월 29일 질문
정말 간단한건데 정말 많은 초보자들이 실수하는것중 하나죠ㅎ
처음에 실수하는건 당연한겁니다 ㅎ

2개의 답변

+4 추천
String 비교는 equals() 로 합니다!
libre2k (7,420 포인트) 님이 2013년 10월 29일 답변
+1 추천
자.. 덧붙이자면

자바에서는 "" 를 쓰는 순간 새로운 String 객체가 하나 생성됩니다.

== 연산자를 객체에 사용하면 객체 값을 비교하는게 아니고

객체가 있는 메모리 주소를 비교합니다.

따라서 새로 생성된 객체와 위에서 str으로 선언된 객체는 다를 수밖에 없습니다.

그런 경우를 위해 자바의 최상위 클래스 Object에 보시면

아주 친절하게도 equals() 라는 메서드가 구현되어 있습니다.

추가로, String 클래스에는 equalsIgnoreCase() 라는 메서드도 있습니다.

대소문자를 무시하고 비교해주는 메서드죠.
퐁풍 (8,740 포인트) 님이 2013년 10월 29일 답변
...