[java]if(type_msg == "0200") 맞는 문법 아닙니까?

송효진의 이미지

이니시스 가상결제 모듈 때문에 자바를 만지게 되었습니다.

type_msg 변수에 String 으로 0200 이 들어오면 처리를 하도록 하려는데,

if(type_msg != "0200") {
    printDebug(type_msg);
}

하면, 0200 이 찍힙니다.

if 문이 false 되었다는건데요...

O 와 0 의 구분은 분명히 했으며

둘 다 String 인데요.

왜 비교가 안되는지 모르겠습니다.

어떤 이유가 있을까요?

Necromancer의 이미지

equals() 메소드 쓰지 않나요? (메소드 이름 맞나 =3=3==33)

if(!(type_msg.equals("0200"))) {
    printDebug(type_msg);
}

Written By the Black Knight of Destruction

nohmad의 이미지

송효진 wrote:
이니시스 가상결제 모듈 때문에 자바를 만지게 되었습니다.

type_msg 변수에 String 으로 0200 이 들어오면 처리를 하도록 하려는데,

if(type_msg != "0200") {
    printDebug(type_msg);
}

하면, 0200 이 찍힙니다.

if 문이 false 되었다는건데요...

O 와 0 의 구분은 분명히 했으며

둘 다 String 인데요.

왜 비교가 안되는지 모르겠습니다.

어떤 이유가 있을까요?

==은 객체(의 주소)를 비교하는 것이지 객체의 값을 비교하지는 않습니다. primitive type을 비교할 때에는 ==을 사용할 수 있지만, string은 객체입니다. equals()을 써야 합니다.

다크슈테펜의 이미지

자바에서 ==은 스트링클래스는 참조된 주소값을 비교하게 됩니다.즉 안에 있는 데이터를 비교하는게 아닙니다.만약 스트링의 값을 비교 하실려고 하신다면 equals을 사용하시는게 맞으실것 같습니다.

인생이란게 다 그런게 아니겠어요....? 뭘(?)
http://schutepen.egloos.com

송효진의 이미지

감사합니다.
해결 하였습니다.
그것 해결하고 나니
이니시스 가상계좌 서버가 PostgreSQL 에 붙지를 않더군요.

모듈명앞에 org. 가 붙게 되어 있는데, 기본적으로 안붙어 있어서,
매뉴얼 뒤져가며 겨우 해결 했네요.