자바 통합-패키징 및 자동 박싱 및 언 박싱

1. 기본 데이터 유형

1.1 기본 유형은 객체가 아닙니다

대 통일은 매우 중요하며 진나라가 6 개국을 통일 한 것처럼 같은 선로, 같은 글, 같은 철학이 필요하며, 통일 된 시스템은 통일 된 경영을 가능하게합니다.

그러나 Java는이를 수행하지 않았습니다. 모든 것이 객체라고 주장하지만 실제로 객체가 아닌 기본 데이터 유형이 있습니다. 매우 유명합니다.

  • 바이트
  • 짧은
  • int
  • 흙손
  • 더블
  • 부울

모든 것이 객체지만 당황스러운 점은 다음과 같으며 기본 유형은 객체가 아닙니다.

	public static void main(String[] args) {
    
    
		Object obj = new Object();
		String str = new String();
		WrapperDemo wrapperDemo = new WrapperDemo();
		int num = 1;

		System.out.println(obj instanceof Object);// 输出true
		System.out.println(str instanceof Object);// 输出true
		System.out.println(wrapperDemo instanceof Object);// 输出true
		System.out.println(num instanceof Object);// 报错 Incompatible conditional operand types int and Object
	}

1.2 통합 작업을 완료 할 수 없습니다.

가장 기본적인 추상화를 제공 할 수 없다면 기본 데이터 유형과 참조 데이터 유형과 동시에 호환 될 수없는 메서드가 몇 가지 있어야합니다.

다음 방법은 기본 데이터 유형을 지원할 수 없기 때문에 매우 부끄럽습니다. 따라서 함수가 거세되는 것과 같습니다.

	/**
	 * 获取一切对象的类型名称
	 */
	public static String getObjectType(Object obj) {
    
    
		return obj.getClass().getName();
	}

2. 포장

Java 개발자도이 문제를 발견하여 래퍼 클래스를 제공하고 8에서 기본 유형에 대한 해당 참조 유형을 정의했습니다.

기본 유형 해당 포장
바이트 바이트
짧은 짧은
int 정수
캐릭터
흙손 흙손
더블 더블
부울 부울

래퍼 클래스를 사용하면 모든 데이터 유형을 통합 할 수 있으며 속성과 매개 변수를 정의 할 때 추상적 인 기반을 가질 수 있습니다. 아래와 같이 모든 것을 객체로 표현할 수 있습니다.

public static void main(String[] args) {
    
    
		Object obj = new Object();
		String str = new String();
		WrapperDemo wrapperDemo = new WrapperDemo();
		Integer num = 1;

		System.out.println(obj instanceof Object);// 输出true
		System.out.println(str instanceof Object);// 输出true
		System.out.println(wrapperDemo instanceof Object);// 输出true
		System.out.println(num instanceof Object);// 输出true
	}

3. 자동 포장 및 포장 풀기

그러나 모든 사람들은 여전히이 int기본 유형 을 사용하는 데 익숙해 져 있으며 유휴 Integer시간에 글을 쓰는 사람은 거의 없을 것입니다.

괜찮아요 JDK 1.5부터는 자동 복싱과 자동 개봉 기능을 제공합니다. 예 :

	public static void main(String[] args) {
    
    
		int a = 1;
		Integer b = a;// 自动装箱:基本类型的变量-->包装类变量
		int c = b;// 自动拆箱:包装类变量-->基本类型变量
		System.out.println("a:" + a + " b:" + b + " c:" + c);// 输出 a:1 b:1 c:1
	}

실제로 지루한 지 확인하면 순방향 자동 호환성을 실현합니다. 다음 예를보십시오.

public class WrapperDemo {
    
    
	public static void main(String[] args) {
    
    
		String str = "abc";
		Integer num1 = 200;
		int num2 = 100;
		System.out.println(getObjectType(str));//输出java.lang.String
		System.out.println(getObjectType(num1));//输出java.lang.Integer
		System.out.println(getObjectType(num2));//输出java.lang.Integer
	}

	/**
	 * 获取一切对象的类型名称
	 */
	public static String getObjectType(Object obj) {
    
    
		return obj.getClass().getName();
	}
}

str 및 num1의 유형 출력은 이해하기 쉽습니다. 왜 num2가 Integer를 출력합니까?

num2는 자동으로 Integer 유형으로 boxing되고 Object 유형은 모든 유형의 기본 클래스이므로 Integer 유형 매개 변수를 허용 할 수 있으므로 인쇄 할 수 있습니다 java.lang.Integer.

4. 요약

패키징 카테고리를 통해 글로벌하고 통일 된 관점이 제공되어 모든 것을 현실로 만듭니다.

자동 포장 및 포장 해제를 통해 원래 기본 유형의 전방 호환성을 실현하고 원활한 연결을 실현합니다.

이것은 사고의 발전이며보다 철저한 추상화를 통해보다 보편적 인 작업을 제공 할 수 있습니다.

추천

출처blog.csdn.net/woshisangsang/article/details/106955323