Basic:
1은 Java의 한 유형입니다. 기본 데이터 유형이며 정수는 int의 래퍼 클래스입니다.
2. 정수 변수는 사용하기 전에 인스턴스화되어야 하지만 int 변수는 그렇지 않습니다.
3. 정수는 실제로 객체에 대한 참조입니다. 정수 객체가 새로 생성되면 실제로 객체를 가리키는 포인터가 생성되고 int는 데이터 값을 직접 저장합니다.
4. Integer의 기본값은 null이고 int의 기본값은 0입니다.
Extension:
1 정수 변수는 실제로 정수 개체에 대한 참조이므로 new를 전달하는 두 정수 변수는 결코 동일하지 않습니다. (new는 메모리 주소가 다른 두 개의 객체를 생성하기 때문입니다)
Integer i = new Integer(100); Integer j = new Integer(100); System.out.print(i == j);//false
2 정수 변수를 int 변수와 비교할 때 두 변수의 값이 동일한 한 결과는 true입니다. 왜냐하면 정수는 본질적으로 int의 래퍼 클래스이기 때문입니다. 두 숫자를 비교할 때 java는 자동으로 정수를 압축 해제하므로 이는 본질적으로 두 int 변수를 비교하는 것입니다.
Integer i = new Integer(100); int j = 100; System.out.print(i == j);//true
3. new로 생성된 Integer 변수와 new로 생성되지 않은 Integer 변수를 비교하면 결과는 false입니다. new 없이 생성된 변수는 Java 상수 풀에 존재하고, new로 생성된 변수는 힙에서 새로 생성된 객체를 가리키기 때문에 둘의 메모리 주소가 다릅니다.
Integer i = new Integer(100); Integer j = 100; System.out.print(i == j);//false
4. 새 정수가 아닌 두 변수를 비교할 때 두 변수의 값이 -128에서 127 사이이면 결과는 true이고, 그렇지 않으면 false입니다.
이 이상한 결과에 대해 java의 설명은 다음과 같습니다.
Integer i = new Integer(100);//在编译时会变成Integer i = Integer.ValueOf(100)
그리고 Java API의 Integer.valueOf() 정의는 다음과 같습니다.
public static Integer valueOf(int i){ assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high){ return IntegerCache.cache[i + (-IntegerCache.low)]; } return new Integer(i); }
JAVA 입문 튜토리얼이 많이 있습니다. 누구나 배울 수 있습니다!
위 내용은 자바 정수와 정수의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!