1.Integerクラス
Integerまた、クラスであるという点でも優れています。つまり、フィールドとメソッドを持つことができます。そしてもちろん、それらも備えています。それらの多くは、数十個です。ここでは最も基本的なものについて考えていきます。
このIntegerクラスには、型の最大値と最小値を含む 2 つのフィールドがありますint。
| 分野 | 説明 |
|---|---|
|
int型の最大値 |
|
int型の最小値 |
int可能な最小値または最大値を変数に割り当てたい場合があります。理解できない定数でコードが乱雑になるのを避けるために、次のように非常に明確に記述することができます。
| コード | 説明 |
|---|---|
|
|
このIntegerクラスには興味深いメソッドもいくつかあります。どうぞ:
| メソッド | 説明 |
|---|---|
|
数値を 16 進数で表現した文字列を返します。 |
|
数値のバイナリ表現である文字列を返します。 |
|
数値を 8 進数で表現した文字列を返します。 |
|
渡されたものをオブジェクトintでラップしますInteger |
|
渡された文字列から取得した数値を返します |
以前に静的Integer.parseInt()メソッドを使用しました。それがどのように機能するかを思い出してみましょう。
int name = Integer.parseInt(string);
数値 (数字のみ) を含む文字列がメソッドに渡されるとparseInt()、その文字列が解析され、その文字列に含まれる数値が返されます。
残りのメソッドも便利です。たとえば、それらの中には、渡された数値を、その数値の 2 進数、8 進数、または 16 進数表現を含む文字列に変換できるものもあります。
2.Doubleクラス
一般に、このDoubleクラスは クラスに似ていますが、ではなくIntegerをラップする点が異なります。私たちにとって興味深いフィールドやメソッドも含まれています。そのうちのいくつかを考えてみましょう。doubleint
このDoubleクラスには 6 つの興味深いフィールドがあります。
| 分野 | 説明 |
|---|---|
|
負の無限大 |
|
正の無限大 |
|
可能な最小の指数 (2 x ) |
|
可能な最大の指数 (2 x ) |
|
double型の最小値 |
|
double型の最大値 |
無限大
-1.0で割ると0.0負の無限大になります。1.0で割ると0.0、正の無限大になります。a をゼロで除算できるだけでなくdouble、これらの演算の結果を保存することもできます。
の指数double
指数を理解するのは簡単です。内部的には、double は仮数と指数で構成されます。しかし、ここでの指数の値は ではなく、 です。したがって、指数が だけ増加すると、数値の合計値は 2 倍になります。10x2x1
MIN_EXPONENT == -1024、これは を意味し、ほぼ等しい2-102410-308
そしてもちろん、このDoubleクラスには興味深いメソッドがあります。
| メソッド | 説明 |
|---|---|
|
数値を 16 進数で表現した文字列を返します。 |
|
渡された数値が無限大かどうかを確認します。 |
|
渡された番号がNaN |
|
渡されたものをオブジェクトdoubleでラップしますDouble |
|
渡された文字列から取得した数値を返します |
興味深いことに、渡された数値が正または負の無限大である場合にisInfinite()返すメソッドがあります。true
メソッドisNaN()も同様で、渡された数値がNaN( Not-a-Number、未定義の値を示す特別な定数) かどうかをチェックします。
3.Characterクラス
このCharacterクラスの主な興味深い点は、文字がさまざまなカテゴリに属しているかどうかを確認できる静的ユーティリティ メソッドが多数あることです。
例
| メソッド | 説明 |
|---|---|
|
文字がアルファベットかどうかを確認します |
|
文字が文字であるかどうかを確認します |
|
文字が数字かどうかを確認します |
|
文字がスペース、改行、または改ページであるかどうかを確認します (コード: 12、13、14) |
|
文字が空白類(スペース、タブなど)であるかどうかを確認します。 |
|
文字が小文字かどうかを確認します |
|
文字が大文字かどうかを確認します |
|
文字を小文字に変換します |
|
文字を大文字に変換します |
これらの方法の特徴は、既知のすべてのアルファベットで機能することです。アラビア数字は数字などとして分類されます。
4.Booleanクラス
タイプBooleanはほぼ同じですboolean。違いは最小限です。
以下に、クラスの簡略化されたバージョンを示しますBoolean。
| コード | 説明 |
|---|---|
|
定数: TRUEиFALSE 変数 Booleanクラス コンストラクター このメソッドは内部変数の値を返します。 この静的メソッドはと に変換 trueします。 TRUEfalseFALSE |
このBoolean型には 2 つの定数 (2 つのフィールド) があります。
| クラスの定数 | ブール型に相当するもの | 説明 |
|---|---|---|
|
|
真実 |
|
|
間違い |
型を操作するのと同じ方法でそれらを操作できますboolean。
| コード | ノート |
|---|---|
|
このBooleanクラスは、条件内に記述できる唯一のクラスです。 |
|
true3 つの変数はすべて/に等しいTRUE |
|
両方を使用して定数を比較できequals、== これも機能します。 |
ここではオートボクシングがうまく機能します。つまり、この型は と同じ方法で使用できboolean、注意すべき落とし穴はありません。
| どのように書かれているか | 使い方 |
|---|---|
|
|
booleanここではと の型の比較を示しますBoolean。
boolean a = true;
Boolean b = true; // b will be equal to Boolean.TRUE
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // true (compared by reference, but they point to the same object)
本当に独立したオブジェクトが必要な場合はBoolean、それを明示的に作成する必要があります。
boolean a = true;
Boolean b = new Boolean(true); // New Boolean object
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // false (compared by reference, and they point to different objects)
Booleanもう 1 つの例では、の内部を使用しますif。
| コード | ノート |
|---|---|
|
これはコンパイルして機能します |
これはコンパイルされますが、機能しません。
| コード | ノート |
|---|---|
|
エラー。この行は例外をスローします |
5. オートボクシング中の値のキャッシュ
整数ラッパー型に関連する落とし穴がいくつかあります。
すでにご存知のとおり、 anintと anを比較するとInteger、 はIntegerに変換されますint。
| どのように書かれているか | 使い方 |
|---|---|
|
|
Integer2 つのオブジェクトを相互に比較する場合、それらは に変換されませんint。
| コード | コンソール出力 |
|---|---|
|
|
a == cと、しかし、なぜなら、と を比較するときは参照を比較しているからです。これは本質的に私たちが期待していることです。b == ca != bab
サプライズ
500しかし、に置き換えると100、まったく異なる結果が得られます。
| コード | コンソール出力 |
|---|---|
|
|
ここでの問題は、オートボクシング中に新しいIntegerオブジェクトが実際に作成されるとは限らないことです。オブジェクトは、包括的な値に対してキャッシュされ-128ます127。
このIntegerクラスには、オブジェクトを格納する隠し配列があります: Integer(-128)、Integer(-127)、 ... Integer(126)、Integer(127)
と記述するとInteger x = 128、オートボクシング プロセスは新しいオブジェクトを作成しますが、 と記述するとInteger x = 127、オートボクシング プロセスはキャッシュ (配列) から既存のオブジェクトを取得します。
Integerオブジェクトをキャッシュから取得したくない場合は、次のように記述してオブジェクトを明示的に作成する必要があります。Integer x = new Integer(127);
すべてのラッパー タイプには次のようなキャッシュがあります: Integer、Long、Byte、Short、Boolean。このBoolean型の場合、そのTRUEとFALSE値は両方とも定数であるため、これらも基本的にキャッシュされます。
GO TO FULL VERSION