>  기사  >  백엔드 개발  >  제2장 포장

제2장 포장

黄舟
黄舟원래의
2016-12-21 13:05:271789검색

우리는 Java가 객체 지향 언어라는 것을 알고 있으며 그 본질 중 하나는 다형성을 사용하여 프로그램의 유연성을 향상시킬 수 있다는 것입니다.

하지만 Java에는 8가지 기본 유형이 있습니다: byte, short, int, long, float, double, char, boolean. 객체가 아닌 값으로 메모리에 존재합니다.

Object의 하위 클래스가 아니며 객체 지향 개발에 참여할 수 없습니다. java1.5 버전 이전에는 다음 코드를 통과할 수 없었습니다.

package com.souvc.api;public class Test {    public static void main(String[] args) {
        String str = "hello";
        doSome(str);// 可以,因为String是Object的子类

        int i = 1;        // 程序编译不通过,原因在于int不是Object的子类,不能使用多态性。        doSome(i);
    }    public static void doSome(Object o) {        // ....    }
}

문제의 원인은 기본 유형 int가 상속 관계가 없고 Object의 하위 클래스가 아니기 때문입니다. 따라서 기본 유형이 객체 형태로 존재하도록 하려면 Integer 클래스를 정의한 다음 해당 인스턴스를 사용하여 기본 유형 int를 설명해야 합니다.

이것의 장점은 객체를 사용하여 기본 유형 데이터를 설명하고 클래스가 객체를 상속한다는 것입니다. 이를 통해 기본 유형이 객체 지향 개발에 참여할 수 있습니다. 다행스럽게도 Java는 이미 8가지 기본 유형에 해당하는 래퍼 클래스를 제공하므로 Integer와 같은 클래스를 정의할 필요가 없습니다.

참고: 자동 언박싱 기능은 Java 버전 1.5 이후에 등장했으며, 위 코드는 정상적으로 컴파일 가능합니다. 자동 개봉 및 상자 포장에 대해서는 나중에 자세히 설명하겠습니다.

8가지 기본 유형에 대해 Java는 해당 패키징 클래스를 제공합니다.

기본 유형 패키징 클래스

byte java. lang.Byte

short java.lang.Short

int java.lang.Integer

long java.lang.Long

float java.lang. Float

double java.lang.Double

char java.lang.Character

boolean java.lang.Boolean

제외 상위 클래스가 Object인 Character 및 Boolean의 경우 나머지는 java.lang.Number

Number에서 상속됩니다. 그 자체로는 인스턴스화할 수 없습니다. Number의 하위 클래스는 표현된 값을 byte, double, float, int, long 및 short로 변환하는 메서드를 제공해야 합니다.

예:

abstract double doubleValue()는 지정된 값을 double form Value

abstract int intValue() 지정된 값을 int 형식으로 반환

abstract float floatValue() 지정된 값을 float 형식으로 반환

나머지 추상 메서드 , API 문서: java.lang.Number를 참조하세요.

이제 기본 유형과 래퍼 클래스 간의 변환 방법을 알아보겠습니다.

기본 유형을 래퍼 클래스로 변환해야 하는 경우 래퍼 클래스의 정적 메서드 valueOf()를 호출할 수 있습니다.

Integer i = Integer. valueOf( 1);
Double d = Double.valueOf(1.1);

래퍼 클래스를 기본 유형으로 변환해야 할 때 다음을 사용할 수 있습니다. 래퍼 클래스의 메서드 xxxValue() 메서드(여기서 서로 다른 래퍼 클래스의 메서드 이름은 정확히 동일하지는 않지만 모두 Value로 끝납니다):

Integer i = new Integer(1);int n = i.intValue();
Double d = new Double(1.1);double dn = d.doubleValue();

위 방법을 사용하여 다음을 수행할 수 있지만 기본 유형과 래퍼 클래스 Convert 간에 통신합니다. 하지만 실제로 코드를 작성할 때는 상대적으로 번거롭습니다. Java는 버전 1.5 이후에 자동 언박싱이라는 새로운 기능을 출시했습니다.

다음 코드는 java1.4에서 컴파일에 실패하지만 java1.5 이후에 컴파일할 수 있습니다.

int i = new Integer(1);//래퍼 클래스는 자동으로 기본 유형으로 변환 자동 언박싱
정수 in = 1;//기본 유형을 패키징 클래스로 자동 변환할 수 있습니다. 자동 박싱

자바는 자동을 어떻게 구현하나요? 상자 풀기는 어떻습니까?

사실 JVM은 이 기능을 지원하지 않습니다. 상자의 자동 압축 풀기는 컴파일 프로세스 중 컴파일러의 "전처리" 작업일 뿐입니다. 컴파일러는 래퍼 클래스와 기본 유형 간에 변환이 필요하다고 판단되면 바이트코드로 컴파일할 때 다음과 같이 변경합니다.

컴파일된 바이트코드의 소스 코드

Integer a = 100 => Integer.valueOf(100);

정수 b = 200 => 정수 b = Integer.valueOf(200);

정수 c = a +b => valueOf (a.intValue( ) + b.intValue( ));

double d = c => double d = c . doubleValue( );

2.1 정수 클래스 - 정수 클래스 34


2.1.1 생성자 메소드 - Integer 클래스의 생성자 메소드 34
2.1.2 Constant - Integer 클래스의 상수 34
2.1.3 bitCount 메소드 - 2의 보수에서 1의 수를 구함 Quantity 34
2.1.4 byteValue 메소드 - 바이트 유형의 값 획득 35
2.1.5 CompareTo 메소드 - 정수 비교 35
2.1.6 decode 메소드 - 문자열을 int 유형으로 디코딩 35
2.1. 7 doubleValue 메소드 - double 값을 반환합니다. 36
2.1.8 equals 메소드 - 정수 객체의 동일성을 결정합니다. 36
2.1.9 floatValue 메소드 - float 값을 얻습니다. 37
2.1.10 getInteger 메소드 - —정수 37의 시스템 속성 값을 가져옵니다.
2.1.11 hashCode 메소드 - 정수 39의 해시 코드를 생성합니다.
2.1.12 maximumOneBit 메소드 - 의 최상위 이진 비트 1의 인덱스를 가져옵니다. 정수 39
2.1.13 intValue() 메서드 - int 값 가져오기 40
2.1.14 longValue 메서드 - long 값 가져오기 40
2.1.15 lowOneBit 메서드 - 최하위 비트의 인덱스 가져오기 1 정수 바이너리 41
2.1.16 parseInt 메서드 - 문자열을 int 값으로 구문 분석 41
2.1.17 역방향 메서드 - 정수 2의 보수의 비트 순서를 역전 43
2.1.18 ReverseBytes 메서드 - 정수 바이트의 순서를 뒤집습니다. 44
2.1.19 shortValue 메서드 - 짧은 값 가져오기 44
2.1.20 signum 메서드 - 정수 부호 가져오기 44
2.1.21 toBinaryString 메서드 - 정수 45의 이진 문자열 생성
2.1.22 toHexString 메소드 - 정수의 16진수 문자열 생성 45
2.1.23 toOctalString 메소드 - 정수의 8진수 문자열 생성 46
2.1.24 toString 메소드 - 정수의 10진수 문자열 생성 47
2.1.25 ValueOf 메소드 - Integer 객체 생성 49


2.2 Long 클래스 - Long 정수 클래스 50


2.2.1 구축 방식 - Long 클래스 구축 방식 51
2.2.2 상수 - Long 클래스의 상수 51
2.2.3 bitCount 메소드 - 2의 보수에서 1의 수를 가져옵니다. 51
2.2.4 byteValue 메소드 - 바이트 값 51을 가져옵니다.
2.2. 5 CompareTo 메서드 - 긴 정수 비교 52
2.2.6 decode 메서드 - 문자열을 긴 형식으로 디코딩 52
2.2.7 doubleValue 메서드 - double 값 반환 53
2.2. 긴 정수 객체 53
2.2.9 floatValue 메소드 - 부동 소수점 값을 가져옵니다. 54
2.2.10 getLong 메소드 - 긴 정수의 시스템 속성 값을 가져옵니다. 54
2.2.11 hashCode 메소드 - 부동 소수점 값의 해시 코드를 생성합니다. 긴 정수 56
2.2.12 maximumOneBit 메서드 - 긴 정수 56의 가장 높은 이진 비트 1의 인덱스를 가져옵니다.
2.2.13 intValue() 메서드 - int 값 57
2.2.14 longValue 메서드 - 긴 값을 가져옵니다. 57
2.2.15 lowerOneBit 메서드 - 긴 정수 이진수의 가장 낮은 비트 1의 인덱스를 가져옵니다. 57
2.2.16 parseLong 메서드 - 문자열을 긴 값으로 구문 분석합니다. 58
2.2.17 Reverse 방법 - 긴 정수의 2의 보수의 비트 순서를 뒤집습니다. 60
2.2.18 ReverseBytes 방법 - 긴 정수 바이트의 순서를 뒤집습니다. 60
2.2.19 ShortValue 방법 - 짧은 값을 가져옵니다. 61
2.2.20 Signum 메소드 - 긴 정수 부호 가져오기 61
2.2.21 toBinaryString 메소드 - 긴 정수 이진 문자열 생성 61
2.2.22 toHexString 메소드 - 긴 정수 16진수 문자열 생성 62
2.2.23 toOctalString 메소드 - 긴 정수 62의 8진수 문자열 생성
2.2.24 toString 메소드 - 긴 정수 63의 10진수 문자열 생성
2.2.25 valueOf 메소드 - 긴 정수 65


2.3 Short 클래스 - Short 정수 클래스 67


2.3.1 구축 방법 - Short 클래스의 구축 방법 67
2.3.2 상수 - Short 클래스의 상수 67
2.3.3 CompareTo 메서드 - 짧은 정수 비교 67
2.3.4 decode 메서드 - 문자열을 짧은 유형으로 디코딩 68
2.3.5 doubleValue 메서드 - double 값 반환 68
2.3.6 Equals 메서드 - 짧은지 여부 결정 정수 개체는 동일합니다 68
2.3.7 FloatValue 메서드 - 부동 소수점 값 가져오기 69
2.3.8 HashCode 메서드 - 짧은 정수 생성 해시 코드 69
2.3.9 intValue() 메서드 - int 값 가져오기 70
2.3.10 longValue 메서드 - 긴 값 가져오기 70
2.3.11 parseShort 메서드 - 문자열을 짧은 값으로 구문 분석 70
2.3.12 reverseBytes 메서드 - 짧은 정수 바이트의 순서를 뒤집음 72
2.3.13 shortValue 메소드 - 짧은 값 가져오기 72
2.3.14 toString 메소드 - 짧은 정수 생성 10진수 문자열 73
2.3.15 valueOf 메소드 - 짧은 객체 생성 73


2.4 Boolean 클래스 - Boolean 클래스 75


2.4.1 생성 방법 - —Boolean 클래스의 생성 방법 75
2.4.2 상수 — Boolean 클래스의 상수 75
2.4.3 booleanValue 메서드 — 부울 값 가져오기 76
2.4.4 CompareTo 메서드 - 부울 값 비교 ​​76
2.4.5 equals 메서드 - 동등성 확인 77
2.4.6>getBoolean 메서드 - 부울 유형의 시스템 속성 값 가져오기 77
2.4.7>hashCode 메소드 - 부울 객체의 해시 코드 생성 78
2.4.8 parseBoolean 메소드 - 문자열을 부울 값으로 구문 분석 78
2.4.9>toString 메소드 - 다음의 문자열을 생성합니다. 부울 값 ​​78
2.4.10> valueOf 메소드 - 부울 객체 생성 79


2.5 Byte 클래스 - Byte 객체 80


2.5.1 Constructor - Byte 클래스 80의 생성자 메소드
2.5.2 Constant - Byte 클래스 80의 상수
2.5 .3 compareTo 메소드 - 바이트 객체 비교 80
2.5.4 decode 메소드 - 문자열을 바이트 값으로 디코딩 81
2.5.5 doubleValue 메소드 - double 값 가져오기 82
2.5.6 equals 메소드 - 바이트 결정 같음 82
2.5.7 floatValue 메서드 - 부동 소수점 값 가져오기 83
2.5.8 hashCode 메서드 - 바이트 객체의 해시 코드 생성 83
2.5 .9 intValue 메서드 - int 값 가져오기 83
2.5.10 longValue 메서드 - 긴 값 가져오기 83
2.5.11 parseByte 메서드 - 문자열을 바이트 값으로 구문 분석 84
2.5.12 shortValue 메서드 ——짧은 값 가져오기 85
2.5.13 toString 메서드 ——10진수 문자열 생성 바이트 값 85
2.5.14 valueOf 메소드 ——바이트 객체 생성 86


2.6 Character 클래스 - 문자 클래스 88


2.6.1 생성자 - 생성자 메소드 문자 클래스 88
2.6.2 상수 - 문자 클래스의 상수 88
2.6.3 charCount 메소드 ——지정된 문자의 코드 포인트 수를 계산합니다. 89
2.6.4 charValue 메소드 ——문자를 가져옵니다. 값 89
2.6.5 CodePointAt 메소드 ——문자 배열 요소의 코드 포인트를 가져옵니다. 90
2.6.6 codePointBefore 메소드 ——문자 배열 인덱스의 이전 요소의 코드 포인트를 가져옵니다. 91
2.6 .7 codePointCount 메소드 —— 문자 배열의 하위 배열에 있는 코드 포인트 수를 반환합니다. 93
2.6.8 CompareTo 메소드 —— 문자 개체 비교 94
2.6.9 equals 메서드 - 문자 개체가 같은지 확인 95
2.6.10>getNumericValue 메소드 - 문자 95가 나타내는 int 값을 반환합니다.
2.6.11>getType 메소드 - 문자의 일반 범주를 나타내는 값을 반환합니다. 97
2.6.12 hashCode 메소드 - 문자 객체의 해시 코드를 생성합니다. 97
2.6.13 isDefined 메소드 - 유니코드 문자인지 확인합니다. 98
2.6.14 isDigit 메소드 - 숫자인지 확인합니다. 98
2.6. 15 isLetter 메소드 - 영문자인지 판별 99
2.6.16 isLowerCase 메소드 - 소문자인지 판별 100
2.6.17 isUpperCase 메소드 - 대문자인지 판별 100
2.6 .18 toLowerCase 메소드-소문자로 변환 101
2.6.19toUpperCase 메소드-대문자로 변환 101


2.7이배정밀도 숫자 클래스 102


2.7 .1 생성자 - Double 클래스 102
의 생성자 2.7.2 상수 - Double 클래스 102
의 상수 2.7.3 byteValue 메서드 - 바이트 값 102
가져오기 2.7.4 비교 메서드 - 배정밀도 디지털 객체 비교 103
2.7.5 CompareTo 메소드 - 두 개의 Double 객체를 비교합니다. 103
2.7.6 intValue 메소드 - 이 Double 값을 int 형식으로 반환합니다. 104
2.7.7 doubleToLongBits 메소드 - 지정된 부동 소수점의 표현을 반환합니다. value 104
2.7.8 doubleToRawLongBits 메소드 - NaN 값을 유지하고 지정된 부동 소수점 값의 표현을 반환합니다. 105
2.7.9 doubleValue 메소드 - double 값 105
2.7.10 equals 메소드를 얻습니다. Double 개체가 같은지 확인 106
2.7.11 floatValue 메서드 - 부동 소수점 값 획득 107
2.7.12 hashCode 메서드 - Double 개체의 해시 코드 생성 107
2.7.13 isInfinite 메서드 - 부동 소수점 값을 확인합니다. Double 값의 크기는 무한합니다 107
2.7.14 isNaN 메서드 - Double 값이 숫자가 아닌 값인지 확인 108
2.7.15 longBitsToDouble 메서드—— 주어진 비트 표현의 double 값을 반환합니다 109
2.7.16 longValue 메서드 - 긴 값을 가져옵니다. 110
2.7.17 parseDouble 메서드 - 문자열을 double 값으로 구문 분석합니다. 110
2.7.18 shortValue 메서드 — —짧은 값 110
을 가져옵니다. 2.7. 19 toHexString 메소드 - 배정밀도 숫자의 16진수 문자열 생성 111
2.7.20 toString 메소드 - 배정밀도 숫자의 10진수 문자열 생성 112
2.7 .21 valueOf 메소드 - Double 객체 생성 112


2.8 Float - 부동 소수점 클래스 113


2.8.1 생성자 - Float 클래스 113의 생성자
2.8.2 Constant - Float 클래스 114의 상수
2.8.3 ByteValue 메소드 - 바이트 값 114 가져오기
2.8.4 비교 메소드 - Float 객체 비교 114
2.8.5 CompareTo 메서드 - 두 개의 Float 객체가 나타내는 값 비교 115
2.8.6 DoubleValue 메서드 - double 값 가져오기 115
2.8. 메소드 - Double 객체가 동일한지 확인 115
2.8.8 floatToIntBits 메소드 - 부동 소수점 값의 표현을 반환 116
2.8.9 floatToRawIntBits 메소드 - 숫자가 아닌 값을 유지하고 지정된 표현을 반환 부동 소수점 값 117
2.8.10 FloatValue 메서드 - 부동 소수점 값을 가져옵니다. 118
2.8.11 hashCode 메서드 - Float 객체의 해시 코드를 반환합니다. 118
2.8.12 intBitsToFloat 메서드 - 부동 소수점을 반환합니다. 지정된 비트 표현 값 118
2.8.13 intValue 메서드 - int 값 가져오기 119
2.8.14 isInfinite 메서드 - float 값의 크기가 무한한지 확인 120
2.8.15 isNaN 메서드 - 무한한지 확인 Float 값은 숫자가 아닌 값입니다. 120
2.8.16 longValue 메소드 - long 값을 가져옵니다. 121
2.8.17 parseFloat 메소드 - 문자열을 float 값으로 구문 분석합니다. 121
2.8.18 shortValue 메소드 - 짧은 값을 얻습니다 122
2.8.19 toHexString 메소드 ——부동 소수점 숫자의 16진수 문자열을 생성합니다 122
2.8.20 toString 메소드——부동 소수점 숫자의 10진수 문자열을 생성합니다 123
2.8.21 valueOf 메소드 —— 부동 소수점 객체 생성 124

위 내용은 패키징 클래스 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.