ssifood   4달 전

스트링인 ret배열에  -1를 기본적으로 다 집어넣고

if조건문으로 -1일때만 값 수정을 하려고 했습니다.  그런데 그 조건식이 잘 안되어 질문합니다.


질문 코드는 아래와 같습니다.


for (int i = 0; i < ret.length; i++) {
ret[i] = "-1";
}

if (ret[arr[i] - 97] == "-1") {
            //위의 조건을 ret[arr[i] - 97] == Integer.toString(-1)
            // 또는 ret[arr[i] - 97]== String.valueOf(-1) 로 작성하면 거짓으로 판명하는 기괴한 상황이 나옵니다.
                // 왜그런겁니까??

}
          

alice   4달 전

String.Equal을 써보세요

allkanet72   4달 전

integer.tostring은 새로운 주소값을 할당하여 값을 새로 넣습니다. 내부적으로 intern이 호출 안되기 때문에 constant pool에 저장 안됩니다. == 연산은 주소일치 여부를 확인하는거라 값자체를 비교하려면 equals 메서드를 사용해야합니다.

ssifood   4달 전

알려주셔서 감사합니다. 두분

댓글을 작성하려면 로그인해야 합니다.