자바 에서 포장 류 소개 및 주의사항

3618 단어 자바포장 류
머리말
자바 에 서 는 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 는 캐 시 체 제 를 사용 하여 시스템 자원 의 지출 을 크게 절약 하고 도형 렌 더 링 속 도 를 가속 화 시 켰 다.여 기 는 잠시 표시 하지 않 고,뒤에 다시 언급 할 것 이다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.

좋은 웹페이지 즐겨찾기