이 프로그램이 첫 번째 print 문에서 false를 인쇄하고 print 문에서 true를 인쇄하는 이유는 무엇입니까? i와 i1은 두 개의 다른 객체이므로 첫 번째 명령문은 예상대로 "true"를 인쇄해야하지만 두 번째 인쇄 명령문은 "false"를 인쇄하여 혼란을 야기합니다.
public static void main(String[] args) {
Integer i = new Integer(10);
Integer i1 = new Integer(10);
System.out.println(i == i1); //printing false
i++;
i1++;
System.out.println(i == i1);//printing true
}
new
키워드를 사용하면 항상 두 개의 다른 인스턴스가 생성됩니다. 따라서 다음은 항상 사실입니다.
new Integer(10) != new Integer(10)
따라서 첫 번째 줄은 "false"를 인쇄합니다.
그때:
i++;
개봉 및 복싱을 숨 깁니다. 다음과 동일합니다.
i = Integer.valueOf(i.intValue() + 1);
의 Javadoc에Integer.valueOf
설명 된대로 -128에서 127 (적어도)까지의 값이 캐시됩니다. 및 Integer.valueOf(11)
둘 모두 에 대해 캐시 된 인스턴스를 다시 가져 오므로 두 번째 행은 "true"를 인쇄합니다.i++
i1++
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다