第2章 包装

黄舟
リリース: 2016-12-21 13:05:27
オリジナル
1754 人が閲覧しました

Java はオブジェクト指向言語であり、その本質の 1 つはプログラムの柔軟性を向上させるためにポリモーフィズムを使用できることです。

しかし、Java には、byte、short、int、long、float、double、char、boolean の 8 つの基本型があります。これらはオブジェクトではなく値としてメモリ内に存在します。

それらは 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 を記述する必要があります。

この利点は、オブジェクトを使用して基本的な型データを記述し、クラスが Object から継承することです。これにより、基本型がオブジェクト指向開発に参加できるようになります。幸いなことに、Java は 8 つの基本型に対応するラッパー クラスをすでに提供しているため、Integer などのクラスを定義する必要はありません。

注: 自動解凍機能は Java バージョン 1.5 以降に登場し、上記のコードは正常にコンパイルできます。箱の自動開梱と梱包については後で詳しく説明します。

8 つの基本型について、Java は対応するパッケージ化クラスを提供します:

基本型パッケージ化クラス

byte java.lang.Byte

short java.lang.Short

int Integer

。 long java.lang.Long

float java.lang.Float

double java.lang.Double

char java.lang.Character

boolean java.lang.Boolean

文字とブール値を除く 親を除くclass オブジェクト、残りは java.lang.Number

から継承されます。

Number は抽象クラスです。それ自体をインスタンス化することはできません。 Number のサブクラスは、表現された値を byte、double、float、int、long、short に変換するメソッドを提供する必要があります

例:

abstract double doubleValue() は、指定された値を double 形式で返します

abstract int intValue() int

abstract の形式で指定された数値 float floatValue() float

の形式で指定された数値を返します。 残りの抽象メソッドについては、API ドキュメントを参照してください: java.lang.Number。

次に、基本型とラッパークラスの間で変換する方法を学びましょう。

基本型をラッパー クラスに変換する必要がある場合は、ラッパー クラスの静的メソッド valueOf() を呼び出すことができます:

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

Integer i = new Integer(1);int n = i.intValue();

Double d = new Double(1.1);double dn = d.doubleValue();


できるけれども上記のメソッドを渡して、基本型とラッパー クラスの間で変換します。しかし、実際にコードを書くとなると割と面倒です。 Java はバージョン 1.5 以降、自動アンボックス化という新機能を導入しました。

次のコードは java1.4 ではコンパイルに失敗しますが、java1.5 以降ではコンパイルできます:

int i = new Integer(1);//ラッパー クラスを基本型に自動的に変換し、自動的にアンボックス化できます。 it

Integer in = 1;//基本型をパッケージ化クラスに自動的に変換できます。 自動ボックス化

それでは、Java はどのように自動ボックス化を実装するのでしょうか?

実際、JVM はこの機能をサポートしていません。コンパイラのコンパイル時の「前処理」操作。コンパイラは、ラッパー クラスとプリミティブ型の間で変換する必要があると判断した場合、バイトコードにコンパイルするときに変更を加えます。整数 b = 200 => 整数 b = Integer.valueOf(200);

整数 c = a+b => 整数 c = Integer.valueOf (a.intValue( ) + b.intValue( ));

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

2.1 整数クラス - 整数クラス 34


2.1.1 Constructorメソッド - Integerクラス34のコンストラクターメソッド
2.1.2 Constant - Integerクラス34の定数
2.1.3 bitCountメソッド - 2の補数34の1の数を取得
2.1.4 byteValueメソッド ——Get byte 型の値 35
2.1.5 CompareTo メソッド—整数を比較 35
2.1.6 Decode メソッド—文字列を int 型にデコードします 35
2.1.7 DoubleValue メソッド—double 値を返します 36
2.1.8 と等しいメソッド - 整数オブジェクトの等しいかどうかを判断します 36
2.1.9 FloatValue メソッド - 浮動小数点値を取得します 37
2.1.10 GetInteger メソッド - 整数のシステム属性値を取得します 37
2.1.11 hashCode メソッド - のハッシュ コードを生成しますinteger 39
2.1.12 highestOneBitメソッド - 整数バイナリの最上位ビット1のインデックスを取得します 39
2.1.13 intValue()メソッド - int値を取得します 40
2.1.14 longValueメソッド - long値40
2.1を取得します.15 lowestOneBitメソッド —— 整数のバイナリの最下位ビット1のインデックスを取得します 41
2.1.16 parseIntメソッド —— 文字列を解析してint値に変換します 41
2.1.17 reverseメソッド —— 2つのビット順序を反転します整数の補数 43
2.1.18 reverseBytes メソッド - 整数バイトの順序を逆にする 44
2.1.19 | shortValue メソッド - short 値を取得する 44
2.1.20 signum メソッド - 整数の符号を取得する 44
2.1.21 | toBinaryString メソッド - 整数の 2 進文字列を生成します 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 Constructorメソッド - Longクラスのコンストラクタメソッド51
2.2.2 Constant - Longクラスの定数51
2.2 .3 bitCountメソッド - 2の補数の1の数を取得する 51
2.2.4 byteValueメソッド - バイト値を取得する 51
2.2.5 compareToメソッド - 長整数を比較する 52
2.2.6 decodeメソッド—— 文字列は次のようにデコードされます。 long 型 52
2.2.7 | doubleValue メソッド - double 値を返します 53
2.2.8 | flatValue メソッド - float 値を取得します 53
2.2.10 | getLong メソッド - Long 整数のシステム属性値を取得します 54
2.2.11 | hashCode メソッド - Long 整数のハッシュ コードを生成します 56
2.2.12 | highstOneBit メソッド - Long 整数の最上位バイナリ ビット 1 のインデックスを取得しますinteger 56
2.2.13 | intValue() メソッド - int 値を取得します 57
2.2.14 longValue メソッド - long 値を取得します 57
2.2.15 lowerOneBit メソッド - long 整数バイナリの最下位ビット 1 のインデックスを取得します 57
2.2.16 parseLong メソッド - Long 値として解析された文字列を変換します 58
2.2.17 Reverse メソッド - Long 整数の 2 の補数のビット順序を反転します 60
2.2.18 ReverseBytes メソッド - Long 整数の順序を反転しますバイト 60
2.2.19 ShortValue メソッド - short 値を取得します 61
2.2.20 signum メソッド - 長整数の符号を取得します 61
2.2.21 |toBinaryString メソッド - 長整数のバイナリ文字列を生成します 61
2.2.22 toHexString メソッド - を生成します長整数の16進数の文字列 62
2.2.23 toOctalStringメソッド - 長整数の8進数の文字列を生成します 62
2.2.24 toStringメソッド - 長整数の10進数の文字列を生成します 63
2.2.25 valueOfメソッド - 長整数のオブジェクト65を作成します

2.3 Short Class - Short integerクラス67

2.3.1 Constructor - Shortクラス67のコンストラクタメソッド67
2.3.2 Constant - Shortクラス67の定数
2.3.3 CompareToメソッド - short integerの比較67
2.3 .4 decodeメソッド- 文字列を short 型にデコードします 68
2.3.5 |doubleValue メソッド - double 値を返します 68
2.3.6 |equals メソッド - short 整数オブジェクトが等しいかどうかを判断します 68
2.3.7 |floatValue メソッド - float 値を取得します 69
2.3.8 hashCodeメソッド - short整数のハッシュコードを生成する 69
2.3.9 intValue()メソッド - int値を取得する 70
2.3.10 longValueメソッド - long値を取得する 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 メソッド - Short オブジェクトの作成 73

2.4 Boolean クラス - Boolean クラス 75

2.4.1 Constructor メソッド - Boolean クラスのコンストラクター メソッド 75
2.4.2 Constant - Boolean クラスの定数 75
2.4.3 | booleanValue メソッド - ブール値の取得 76
2.4.4 | CompareTo メソッド - ブール値の比較 76
2.4.5 | 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クラス - バイトオブジェクト80


2.5.1 Constructor - Byteクラス80のコンストラクタ
2.5.2 Constant - Byteクラス80の定数
2.5.3 CompareToメソッド - バイトオブジェクト80の比較
2.5.4 decodeメソッド- 文字列を Byte 値にデコードします 81
2.5.5 |doubleValue メソッド - double 値を取得します 82
2.5.6 equals メソッド - バイトの等価性を決定します 82
2.5.7 floatValue メソッド - — float 値を取得します 83
2.5.8 | hashCode メソッド - バイト オブジェクトのハッシュ コードを生成します 83
2.5.9 | intValue メソッド - int 値を取得します 83
2.5.10 | longValue メソッド - Long 値を取得します 83
2.5.11 parseByte メソッド - 文字列を解析しますバイト値 84
2.5.12 | shortValue メソッド - short 値を取得します 85
2.5.13 | toString メソッド - バイト値の 10 進文字列を生成します 85
2.5.14 | Byte オブジェクトを作成します 86

2.6 Characterクラス - 文字クラス88

2.6.1 Constructorメソッド - Characterクラス88のコンストラクタメソッド
2.6.2 Constant - Characterクラス88の定数
2.6.3 charCountメソッド - 指定された文字のコードポイント数を計算する89
2.6.4 | charValue メソッド - char 値を取得します 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 メソッド - 文字で表される int 値を返す95
2.6.11 getType メソッド - 文字の一般カテゴリを示す値を返す97
2.6.12 hashCode メソッド - 文字オブジェクトのハッシュ コードを生成する97
2.6.13 isDefined メソッド - Unicode 文字かどうかを判断する 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.19 |toUpperCaseメソッド - 大文字に変換文字101

2.7 Double ——倍精度数値クラス102

2.7.1 Constructorメソッド——Doubleクラス102のコンストラクタメソッド
2.7.2 Constant——Doubleクラス102の定数
2.7.3 byteValueメソッド——バイト値を取得します 102
2.7. 4. Compare メソッド - 倍精度デジタル オブジェクトを比較します 103
2.7.5 CompareTo メソッド - 2 つの Double オブジェクトを比較します 103
2.7.6 intValue メソッド - この Double 値を int 形式で返します 104
2.7.7 doubleToLongBitsメソッド - 指定された浮動小数点値の表現を返す 104
2.7.8 | doubleToRawLongBits メソッド - NaN 値を保持し、指定された浮動小数点値の表現を返す 105
2.7.9 | doubleValue メソッド - double 値 105
2.7.10 |equalsメソッド - Doubleオブジェクトが等しいかどうかを判定106
2.7.11 floatValueメソッド--float値を取得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 17. parseDouble メソッド - 文字列を double 値に解析します 110
2.7.18 shortValue メソッド - short 値 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 定数 - Float クラスの定数 114
2.8.3 byteValue メソッド - バイト値の取得 114
2.8.4 Compare メソッド - Float オブジェクトの比較 114
2.8. 5 compareToメソッド - 2つのFloatオブジェクトが表す値を比較します 115
2.8.6 |doubleValueメソッド - double値を取得します 115
2.8.7 equalsメソッド - 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メソッド—指定されたビット表現でfloat値を返す 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 | - 文字列を float 値に解析します 121
2.8.18 shortValue メソッド - short 値を取得します 122
2.8.19 |toHexString メソッド - 浮動小数点数の 16 進数文字列を生成します 122
2.8.20 toString メソッド - 10 進数文字列を生成します浮動小数点数 123
2.8 .21 ValueOf メソッド - 浮動小数点オブジェクトの作成 124

上記はパッケージング クラスの内容です。さらに関連する内容については、PHP 中国語 Web サイト (m.sbmmt.com) に注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!