자바 패키지 클래스

3485 단어 자바
자바 언어 는 대상 을 대상 으로 하 는 언어 이지 만 자바 의 기본 데이터 유형 은 대상 을 대상 으로 하지 않 습 니 다.이것 은 실제 사용 할 때 많은 불편(예 를 들 어 패 키 징 과 유형 과 관련 된 일부 조작)이 존재 합 니 다.이 부족 을 해결 하기 위해 디자인 유형 에서 모든 기본 데이터 유형 에 대응 하 는 유형 을 디자인 하여 대표 합 니 다.이렇게 8 개의 기본 데이터 형식 과 대응 하 는 종 류 를 포장 류(Wrapper Class)라 고 통칭 한다.이 클래스 들 은 특정 데이터 형식 을 처리 하 는 작업 을 패키지 합 니 다.예 를 들 어 char 유형의 데 이 터 를 조작 하려 면 Character 형식 을 사용 해 야 합 니 다(모든 포장 류 는 포장 유형 에 대한 일반적인 작업 을 밀봉 합 니 다).
각종 대상 의 조작 에 대한 학습 은 역시 JDK 와 소스 코드 를 빌려 야 한다.여기 서 몇 가지 예 를 들 자.
1.모든 디지털 유형의 포장 류 는 이 유형의 최대 치 와 최소 치 를 밀봉 합 니 다.
Integer 를 예 로 들 면 Integer 의 소스 코드 에서:
4.567913.이 두 static final 의 속성 은 Integer 가 저장 할 수 있 는 데이터 의 크기 를 규정 했다.
2.편리 한 유형 변환 과 C++대비,예 를 들 어 C++에서 int 와 String 으로 변환 할 때 stringstream 대상 을 사용 하거나 라 이브 러 리 함수(boost 라 이브 러 리 의 lexicalcast),
자바 의 포장 류 는 유형 변환 작업 을 봉인 했다.데이터 와 방법의 패 키 징 을 실 현 했 습 니 다.이것 이 바로 대상 을 대상 으로 하 는 장점 입 니 다.(여기 서도 C++JAVA 가 대상 을 대상 으로 하지 않 음 을 알 수 있 습 니 다)
int 와 String 의 상호 전환 을 예 로 들 면
int -> String
@Native public static final int   MIN_VALUE = 0x80000000;
@Native public static final int   MAX_VALUE = 0x7fffffff;
int i=12345;
String s="";
//     
s=i+"";
//i   Integer    Integer.toString    String   +   ,     2 String  

//     
s=String.valueOf(i);
//String.valueOf(int i)  
public static String valueOf(int i) {
    return Integer.toString(i);
}
//String.valueOf()              ,   Object   Object.toString()
public static String valueOf(boolean b) {
    return b ? "true" : "false";
}
public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}
String -> int


3.최적화 기능(대상 풀)
사실 이 특징 은 가상 컴퓨터 의 특징 이 라 고 할 수 있 지만 대상 이 아니라면 가상 컴퓨터 도 이러한 최적화 기능 을 실현 할 수 없다.여기 서 사용 하 는 것 은 하나의 대상 풀 의 개념 이다.python 에 도 똑 같이 존재 한다.또한 잔소리 한 마디 는 python 에 비해 자바 의 기본 유형 은 대상(Object 를 계승 하지 않 음)이 아니 라 python 의 모든 대상 은 Object 를 계승 한다.
s="12345";
int i;
//     
i=Integer.parseInt(s);
//Integer.parseInt()    String int             ,      :
//  
public static int parseInt(String s, int radix){
	......
}
public static int parseInt(String s) throws NumberFormatException {
    return parseInt(s,10);
}

//     
i=Integer.valueOf(s).intValue();
//  
public static Integer valueOf(String s) throws NumberFormatException {
    return Integer.valueOf(parseInt(s, 10));
}
//parseInt    int ,      Integer.valueOf(int)
//Integer.intVaule    Integer     int  。

상 자 를 포장 하 는 것 이 바로 사용 하 는 value Of 임 을 알 수 있 습 니 다.상 자 를 뜯 는 것 은 intValue 입 니 다.(여 기 는 Integer 의 예 일 뿐 입 니 다)이것들 은 모두 컴 파일 러 의 작업 입 니 다.Integer.valueOf(3)를 진정 으로 실행 할 때 는 운행 기간 입 니 다.원본 코드 를 보십시오.
4.567913.Integer Cache 를 사 용 했 는데 이 IntergerCache 는 이른바 Integer 의 대상 지 이다.Integer Cache 는 Integer 의 static 내부 클래스 로 JVM 이 Integer 클래스 를 처음 불 러 올 때 Integer Cache 클래스 를 불 러 오고 Integer Cache 에 서 는 static 블록 을 사용 하여 초기 화 합 니 다.그래서 Integer 류 를 처음 불 러 왔 을 때 Integer Cache 류 가 초기 화 되 었 습 니 다.이 점 은 python 과 다른 python 의 작은 정수 탱크 가 가상 컴퓨터 내부 에 있 었 다 는 것 이다.
원본 코드 보기:
//  :
Integer i = 3;
//                 :
Integer localInteger = Integer.valueOf(3);

원본 코드 에서 알 수 있 듯 이 Integer Cache 에 저 장 된 것 은-128~127 의 Integer 대상 이다.또한 Integer Cache 에서 private 구조 함수 에 주의 하 십시오.
본 고 는 Integer 류 를 자바 포장 류 학습 의 예 로 삼 아 기본 사상 은 비슷 하지만 각 유형 은 차이 가 있 습 니 다.처리 대상 이 다 르 기 때 문 입 니 다.

좋은 웹페이지 즐겨찾기