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

문자열의 null check 에 대한 질문

0 추천
안녕하세요.

xml 을 파싱해서 값을 변경하고 저장하는 스크립트는 짜는중인데요,

각 tag의 attribute 값을 string으로 저장하는 과정에서 의문이 생겼습니다.

String width_old = tag.getAttribute(LAYOUT_WIDTH);

이런식으로 속성값을 읽어왔는데 문제는 tag에 따라서 저 속성이 없는경우가 있거든요 즉 그럴때는

width_old 가 null 이 되는 셈이죠.

해당 속성이 없어서 width_old 가 null 인상황에서 이상한 점을 발견했습니다.

null 검사를 할대

if( tag.getAttribute(LAYOUT_WIDTH) == null)  System.out.println("Null입니다");

이렇게 하면 NULL 입니다가 찍힙니다.

그런데

 

if(width_old == null) System.out.println("Null입니다");

이렇게 하면 NULL입니다 가 안찍힙니다. 이상해서 width_old 를 찍어봤더니 역시나 그냥 화면에 아무글씨도 없습니다.

띄어쓰기도 아니고 그냥 빈칸입니다.

분명히 저 null check 이 전에 width_old = tag.getAttribute(LAYOUT_WIDTH);

를 했는데도 왜 tag.getAttribute(LAYOUT_WIDTH); 는 NULL 로 인식하면서 width_old 는 null로 인식을 안할까요?

혹시나 해서 if(width_old == "" ) 이걸로도 해봤는데 이것도 안탑니다.

아시는 분 설명 부탁드립니다.

 

좋은하루 되세요.
탯탯탯 (430 포인트) 님이 2013년 4월 9일 질문
문자열비교는 equales 쓰셔야합니다.. 문자열은 객체거든요...
일단위상태는 "" 이기때문에 null이 아니고요 ==로는 메모리주소값비교이기때문에
성립안하고요... length로만 되는건 지극히 당연하게죠

1개의 답변

0 추천
equals("") 나 length() == 0 도 같이 넣어서 해보세요 ㅋ
갈무리 (12,430 포인트) 님이 2013년 4월 9일 답변
다른건 안먹고 .length() ==0 만 먹네요. 참.. 알수없습니다..
...