1. Java 기본 데이터 유형 및 해당 캡슐화 클래스
Java 데이터 유형에는 기본 데이터 유형과 참조 데이터 유형이 포함되어 있습니다. 기본 데이터 유형에 해당하는 캡슐화 클래스가 도입되었습니다. 예를 들어 int 캡슐화 클래스는 Integer입니다.
온라인 교육 영상 공유: java 교육 영상
2. Java 자동 언박싱 및 자동 박싱
1. 자동 박싱
오토박싱은 실제로 기본 데이터 유형을 참조 데이터 유형(객체)으로 변환합니다.
2. 자동 언박싱자동 언박싱은 실제로 참조 데이터 유형을 기본 데이터 유형으로 변환하는 것입니다.
코드는 다음과 같습니다.
public static void main(String[] args) { Integer a = 1;//这里就用到了自动装箱;等同于Integer a = new Integer(1); int b = a - 1;//对象不能直接进行计算,所以这里有自动拆箱的操作,将a对象转换成基本数据类型,然后-1 System.out.println(a); System.out.println(b); }
인쇄 결과:
1 03위에서. int와 Interger의 차이점을 볼 수 있습니다.
int는 기본 데이터 유형이고 Integer는 참조 데이터 유형입니다.
int 기본값은 0이고 Integer 기본값은 null입니다. int 유형은 직접 숫자 값을 저장합니다. 정수는 객체를 인스턴스화하고 객체의 주소를 가리켜야 합니다. 이렇게 생각하시나요? 사실, 둘 사이에는 몇 가지 세부적인 차이점이 있습니다. 다음과 같습니다public static void main(String[] args) { Integer a = new Integer(1); Integer b = new Integer(1); int c = 1; int d = 1; Integer e = 1; Integer f = 1; Integer g = 130; Integer h = 130; Integer i = new Integer(130); int j = 130; }1: a == b? 말도 안 돼요, 확실히 평등하지 않아요. 두 개의 새 개체의 주소가 다릅니다. 2: c == d? 이것도 말도 안되는 소리입니다. 기본 데이터 유형의 값은 동일해야 합니다. 3: 이제 핵심 질문은 e == f인가요? g == h? 답은 다음과 같습니다: e == f; 왜 이런 일이 발생하나요? ava가 컴파일될 때 Integer g = 130이 Integer.valueOf(130)로 컴파일되기 때문에 이는 클래스 파일을 디컴파일하여 확인할 수 있습니다. Integer 소스 코드에서 Integer.valueOf() 메서드는 -128~127 값 사이의 Integer를 캐시하고 새 값을 생성하지 않을 것이라는 결론을 내릴 수 있으므로 값 2가 다음과 같을 때 e==f; 127보다 크거나 작음 - 128에서는 새로운 것이 생성되므로 g != h.
Integer의 valueOf 메서드는 다음과 같습니다.
public static Integer valueOf(int i) { //IntegerCache.low == -128 ;IntegerCache.high == 127 //当数值大于-128小于127时,进行缓存;否则重新new一个。 if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }4: c == e입니까, i == j입니까?
답은 모두 동일합니다. 캡슐화된 클래스를 기본 데이터 유형과 비교할 때 Java는 자동으로 해당 클래스를 unboxing한 다음 값이 동일한지 비교하기 때문입니다.
요약: 1. 모두 캡슐화된 클래스이고 모두 new에서 파생되므로 확실히 동일하지 않습니다. 객체의 메모리 주소가 다르기 때문입니다. 2. 값이 -128~127 사이이면 모두 캡슐화된 클래스이고, 그렇지 않으면 동일하지 않습니다. 3. 패키지 클래스와 기본 유형을 비교하면 값이 동일한 한 동일하고, 그렇지 않으면 동일하지 않습니다. 캡슐화된 클래스와 기본 데이터 유형을 비교할 때 자동 언박싱 작업이 발생하기 때문입니다. 4. 값이 동일하면 모두 기본 데이터 유형입니다. 그렇지 않으면 동일하지 않습니다. 더 많은 관련 튜토리얼을 보려면 다음을 방문하세요.Java 시작하기
위 내용은 Java에서 int와 정수의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!