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. 요약
패키징 카테고리를 통해 글로벌하고 통일 된 관점이 제공되어 모든 것을 현실로 만듭니다.
자동 포장 및 포장 해제를 통해 원래 기본 유형의 전방 호환성을 실현하고 원활한 연결을 실현합니다.
이것은 사고의 발전이며보다 철저한 추상화를 통해보다 보편적 인 작업을 제공 할 수 있습니다.