자바 에서 포장 류 소개 및 주의사항
자바 에 서 는 8 가지 기본 데이터 형식 을 제외 하고 모두 인용 유형 이라는 것 을 잘 알 고 있다.인용 유형 을 사용 하 는 것 은 대상 을 향 한 사상 을 더욱 잘 관철 시 키 기 위해 서 인 데 왜 8 가지 기본 데이터 유형 을 보존 해 야 합 니까?
프로그래머 를 돌 보 는 습관 이 더 많다.프로그래머 의 습관 을 배려 하 는 동시에 대상 을 대상 으로 프로 그래 밍 하 는 사상 을 전면적으로 관철 시 키 기 위해 자바 에 포장 체 제 를 도입 했다.
이른바 포장 류 란 8 가지 기본 데이터 유형 에 해당 하 는 인용 유형 을 정 의 했 는데 그 대응 관 계 는 다음 과 같다.
분명히 int 와 char 를 제외 하고 나머지 포장 류 는 모두 해당 하 는 기본 데이터 유형의 이니셜 을 대문자 로 쓰 면 된다.그런데 왜 포장 류 를 도입 해 야 합 니까?앞에서 말 했 듯 이 대상 을 대상 으로 하 는 프로 그래 밍 사상 을 전면적으로 관철 시 키 기 위해 서 이다.구체 적 으로 말 하면 비 인용 유형의 데 이 터 는 사용 할 때 많은 제약 이 있다.예 를 들 어
List list=new ArrayList();
은 인용 유형 에 대해 list.add(obj);
을 직접 사용 하여 추가 할 수 있 지만 기본 데이터 유형 에 대해 서 는 추가 할 수 없 기 때문에 Array List 중의 많은 방법(예 를 들 어 정렬,삭제 등)많은 불편 을 초래 할 수 있 고 포장 류 를 사용 하면 이런 결함 을 잘 피 할 수 있다.또한 JDK 1.5 부터 자동 포장 과 자동 분해 기능 을 제공 하기 때문에 현재 다음 과 같은 3 가지 포장 류 를 초기 화 하 는 방법 이 있 습 니 다.
방법 1:해당 하 는 기본 데이터 형식 변수 나 상수,예 를 들 어
int a1=3;Integer a2=new Integer(a1);
Float f=new Float(3.14f);
Boolean b=new Boolean(true);
방법 2:문자열 을 통 해 전달 합 니 다.예 를 들 어
Integer a=new Integer("3");
Float f=new Float("3.14");
Boolean b=new Boolean("true");
주의해 야 할 것 은'True'를 사용 해도 된다 는 것 이다.예 를 들 어 Boolean b=new Boolean(“True”);
이다.방법 3:
Integer a=3;Float f=3.14f;Boolean b=true;
과 new Float(“3.14”)
같은 자동 포장 기능 을 통 해 Float 유형 변 수 를 초기 화 할 수 있 으 나 new Float(“3.14f”)
을 사용 하여 Float 유형 변 수 를 초기 화 할 수 없습니다.3.14 는 double 형식 이기 때문에 자동 으로 더 블 유형 변수 로 만 포장 할 수 있 습 니 다.인용 유형 사용==비교 할 때 두 사람 이 같은 대상 을 가리 킬 때 만 true 로 돌아 가 는 것 을 알 고 있 습 니 다.그렇지 않 으 면 값 이 같 더 라 도 false 로 돌아 갑 니 다.포장 류 도 인용 유형 에 속 하기 때문에 다음 코드 의 실행 결 과 는 false 입 니 다.
Float f1=new Float(3.14f);
Float f2=new Float(3.14f);
System.out.println(f1==f2);
그러나 다음 코드 의 출력 결 과 는 앞에서 논의 한 것 과 다르다.왜 일 까?
import java.util.*;
public class TestWrapperClass
{
public static void main(String[]args)
{
Integer t1=3;
Integer t2=3;
System.out.println(t1==t2);
Integer t3=128;
Integer t4=128;
System.out.println(t3==t4);
Boolean b1=true;
Boolean b2=true;
System.out.println(b1==b2);
}
}
그 출력 결 과 는 다음 그림 과 같다.앞의 토론 에 따 르 면 모두 false 를 출력 해 야 하 는데 여기 t1 과 t2,b1 과 b2 의 비교 결 과 는 true 입 니 다.이것 은 과학적 이지 않 습 니 다!
원래 자바 는 더욱 높 은 실행 효율 을 얻 기 위해 특정한 디자인 에 캐 시 체 제 를 도입 했다!
이곳 의 Integer 와 Boolean 류 의 디자인 은 바로 이와 같다.
Float f=3.14;
류 의 일부 소스 코드 는 다음 과 같다.
static final Integer[]cache=new Integer[-(-128)+127+1];
static{
for(int i=0;i<cache.length;i++)
cache[i]=new Integer[i-128);
}
분명 한 것 은 시스템 이-128~127 사이 의 정 수 를 Integer 인 스 턴 스 로 포장 하고 cache 배열 을 통 해 캐 시 를 하기 때문에-128~127 사이 의 Integer 유형 변수 라면 그 대상 은 모두 cache 배열 의 구성원 이 므 로 두 개의 값 이 같 고-128~127 사이 의 Integer 변수 만 있 으 면 그들 이 가리 키 는 대상 은 같은 것 이다.그러므로==비 교 를 할 때 도 true.Boolean 으로 돌아 가 는 상황 은 이와 유사 하 다.실제로 자바 뿐만 아니 라 안 드 로 이 드 의 일부 유형 도 캐 시 체 제 를 사용 했다.예 를 들 어 안 드 로 이 드 의 ListView 는 전형 적 인 예 이다.계승 방법 인 getView 에서 convertView 는 캐 시 체 제 를 사용 하여 시스템 자원 의 지출 을 크게 절약 하고 도형 렌 더 링 속 도 를 가속 화 시 켰 다.여 기 는 잠시 표시 하지 않 고,뒤에 다시 언급 할 것 이다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.