왜 프로그래머는 여전히 Java에서 기본 유형을 사용합니까?
Java 5에 박싱 및 언박싱이 도입되었음에도 불구하고 많은 개발자가 계속해서 기본 유형을 활용하고 있습니다. java.lang.Integer와 같은 해당 객체에 대응하는 int와 같은 기본 유형입니다. 이 관행은 객체 유형이 제공하는 추가 편의성을 고려할 때 왜 이런 일이 발생하는지에 대한 의문을 제기합니다.
Joshua Bloch의 "Effective Java"(항목 5: "불필요한 객체 생성 방지")에 설명된 대로 기본 형식의 사용은 상당한 성능상의 이점을 얻을 수 있습니다. 그의 코드 예제에서 Long 객체를 사용하여 long을 합산하는 데는 43초가 걸리는 반면, 프리미티브를 사용하면 프로세스가 6.8초로 가속화됩니다.
프리미티브 사용에 기여하는 또 다른 요인은 객체 유형의 기본 값 동일성이 부족하다는 것입니다. 동등성을 확인하려면 프리미티브에 사용할 수 있는 효율적인 == 연산자와 달리 장황한 equals() 메서드를 사용해야 합니다.
다음 코드 조각을 고려하세요.
class Biziclop { public static void main(String[] args) { System.out.println(new Integer(5) == new Integer(5)); // false System.out.println(new Integer(500) == new Integer(500)); // false System.out.println(Integer.valueOf(5) == Integer.valueOf(5)); // true System.out.println(Integer.valueOf(500) == Integer.valueOf(500)); // false } }
출력에서 불일치가 드러납니다. new Integer()와 Integer.valueOf() 사이의 값이 동일합니다. JLS(Java 언어 사양)에서는 최소 256개의 정수 플라이웨이트([-128; 127]) 캐시가 필요하지만 JVM 구현자는 이 범위를 확장할 수 있습니다. 이는 특정 값이 일부 시스템에서는 캐시되지만 다른 시스템에서는 캐시되지 않아 예기치 않은 동작이 발생할 수 있음을 의미합니다.
위 내용은 래퍼 클래스가 있음에도 불구하고 Java 프로그래머가 기본 유형을 선호하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!