ホームページ Java &#&はじめる Javaのintとintegerの違い

Javaのintとintegerの違い

Nov 30, 2019 pm 05:24 PM
int integer java 違い

Javaのintとintegerの違い

1. Java の基本データ型とそのカプセル化クラス

Javaのintとintegerの違い

javaデータ型には基本データ型と参照データ型があり、基本データ型をオブジェクトとして処理しやすくするために、Java では基本データ型に対応するカプセル化クラスが導入されています。たとえば、int カプセル化クラスは Integer です。

オンライン教育ビデオ共有: java 教育ビデオ

2. Java の自動開梱と自動梱包

# #1 . 自動ボックス化

#自動ボックス化は、実際には基本データ型を参照データ型 (オブジェクト) に変換することです

#2. 自動ボックス化解除

自動ボックス化解除実際には、参照データ型を基本データ型に変換しています

コードは次のとおりです:

    public static void main(String[] args) {
        Integer a = 1;//这里就用到了自动装箱;等同于Integer a = new Integer(1);

        int b = a - 1;//对象不能直接进行计算,所以这里有自动拆箱的操作,将a对象转换成基本数据类型,然后-1
        System.out.println(a);
        System.out.println(b);
    }
ログイン後にコピー

印刷結果:

1
0
ログイン後にコピー

3. int と Interger の違い

上記のことから、int と Interger の違いがわかります。

int は基本データ型で、Integer は参照データ型です。

## デフォルト#int の値は 0、Integer のデフォルト値は null です。

int 型は値を直接格納し、Integer はオブジェクトをインスタンス化し、オブジェクトのアドレスを指す必要があります。

そういえば、それだけだと思いませんか?実は、両者には次のような細かい違いがあります:

    public static void main(String[] args) {
        Integer a = new Integer(1);
        Integer b = new Integer(1);

        int c = 1;
        int d = 1;

        Integer e = 1;
        Integer f = 1;
        
        Integer g = 130;
        Integer h = 130;
        
        Integer i = new Integer(130);
        int j = 130;
    }
ログイン後にコピー

1: a == b?ナンセンス、絶対に平等ではない。 2 つの新しいオブジェクトのアドレスは異なります。

2: c == d?これもナンセンスで、基本データ型の値は等しくなければなりません。

3: ここでの重要な質問は、e == f? です。 g == h?

答えは、e == f; g != hです。

なぜこのようなことが起こるのでしょうか? ava がコンパイルされると、Integer g = 130 は Integer.valueOf(130) にコンパイルされるため、これはクラス ファイルを逆コンパイルすることで確認できます。 Integer ソース コードから、Integer.valueOf() メソッドは値 -128 ~ 127 の間の整数をキャッシュし、新しい整数を作成しないため、値 2 が のとき e==f; であると結論付けることができます。 127 より大きいか小さい - 128 で新しいものが作成されるため、g != h になります。

Integer の valueOf メソッドは次のとおりです:

    public static Integer valueOf(int i) {
         //IntegerCache.low == -128  ;IntegerCache.high == 127
         //当数值大于-128小于127时,进行缓存;否则重新new一个。
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
ログイン後にコピー
4: c == e, i == j ですか? 答えはすべて等しいです。なぜなら、カプセル化されたクラスと基本的なデータ型を比較す​​るとき、Java は自動的にそれらをボックスから取り出して、値が等しいかどうかを比較するからです。

概要:

1. これらはすべてカプセル化されたクラスであり、すべて new から派生しているため、まったく同じではありません。オブジェクトのメモリアドレスが異なるためです。

2. これらはすべてカプセル化されたクラスであり、new から派生したものではありません。値が -128 ~ 127 の場合は等しく、それ以外の場合は等しくありません。

3. カプセル化されたクラスと基本型を比較す​​る場合、値が等しい限りは等しく、そうでない場合は等しくありません。カプセル化されたクラスと基本データ型を比較す​​るときに、自動的にボックス化解除操作が行われるためです。

4. これらはすべて基本的なデータ型であり、値が等しい場合は等しい、そうでない場合は等しくありません。

さらに関連するチュートリアルについては、次のサイトを参照してください:

Java 入門

以上がJavaのintとintegerの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語のcharとwchar_tの違い C言語のcharとwchar_tの違い Apr 03, 2025 pm 03:09 PM

C言語では、charとwchar_tの主な違いは文字エンコードです。CharはASCIIを使用するか、ASCIIを拡張し、WCHAR_TはUnicodeを使用します。 Charは1〜2バイトを占め、WCHAR_Tは2〜4バイトを占有します。 charは英語のテキストに適しており、wchar_tは多言語テキストに適しています。 CHARは広くサポートされており、WCHAR_TはコンパイラとオペレーティングシステムがUnicodeをサポートするかどうかに依存します。 CHARの文字範囲は限られており、WCHAR_Tの文字範囲が大きく、特別な機能が算術演算に使用されます。

マルチスレッドと非同期C#の違い マルチスレッドと非同期C#の違い Apr 03, 2025 pm 02:57 PM

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。

C言語関数の基本的な要件は何ですか C言語関数の基本的な要件は何ですか Apr 03, 2025 pm 10:06 PM

C言語関数は、コードモジュール化とプログラム構築の基礎です。それらは、宣言(関数ヘッダー)と定義(関数体)で構成されています。 C言語は値を使用してパラメーターをデフォルトで渡しますが、外部変数はアドレスパスを使用して変更することもできます。関数は返品値を持つか、または持たない場合があり、返品値のタイプは宣言と一致する必要があります。機能の命名は、ラクダを使用するか、命名法を強調して、明確で理解しやすい必要があります。単一の責任の原則に従い、機能をシンプルに保ち、メンテナビリティと読みやすさを向上させます。

Charとunsigned Charの違いは何ですか Charとunsigned Charの違いは何ですか Apr 03, 2025 pm 03:36 PM

CharおよびUnsigned Charは、文字データを保存する2つのデータ型です。主な違いは、負と正の数に対処する方法です:値範囲:char署名(-128〜127)、および符号なしのchar unsigned(0〜255)。負の数処理:charは負の数を保存でき、符号なしのcharはできません。ビットモード:char最高ビットは、シンボル、符号なしのchar unsignedビットを表します。算術操作:charおよびunsigned charが署名されており、署名されていないタイプがあり、それらの算術操作は異なります。互換性:charおよびunsigned char

CとC#の違いと接続は何ですか? CとC#の違いと接続は何ですか? Apr 03, 2025 pm 10:36 PM

CとC#には類似点がありますが、それらは完全に異なります。Cはプロセス指向の手動メモリ管理、およびシステムプログラミングに使用されるプラットフォーム依存言語です。 C#は、デスクトップ、Webアプリケーション、ゲーム開発に使用されるオブジェクト指向のガベージコレクション、およびプラットフォーム非依存言語です。

H5とミニプログラムとアプリの違い H5とミニプログラムとアプリの違い Apr 06, 2025 am 10:42 AM

H5。ミニプログラムとアプリの主な違いは次のとおりです。技術アーキテクチャ:H5はWebテクノロジーに基づいており、ミニプログラムとアプリは独立したアプリケーションです。経験と機能:H5は軽量で使いやすく、機能が限られています。ミニプログラムは軽量で、インタラクティブが良好です。アプリは強力で、スムーズな経験があります。互換性:H5はクロスプラットフォーム互換性があり、アプレットとアプリはプラットフォームによって制限されています。開発コスト:H5には、開発コストが低く、中程度のミニプログラム、最高のアプリがあります。適用可能なシナリオ:H5は情報表示に適しており、アプレットは軽量アプリケーションに適しており、アプリは複雑な機能に適しています。

XPathを使用して、JavaScriptの指定されたDOMノードから検索する方法は? XPathを使用して、JavaScriptの指定されたDOMノードから検索する方法は? Apr 04, 2025 pm 11:15 PM

JavaScriptのDOMノードの下でのXpath検索方法の詳細な説明、XPath式に基づいてDOMツリーから特定のノードを見つける必要があることがよくあります。あなたがする必要があるなら...

Routerフォルダーの下のindex.jsファイルでvue.use(vuerouter)を呼び出す必要があるのはなぜですか? Routerフォルダーの下のindex.jsファイルでvue.use(vuerouter)を呼び出す必要があるのはなぜですか? Apr 05, 2025 pm 01:03 PM

Vueアプリケーションを開発するときに、ルーターフォルダーの下にindex.jsファイルにvuerouterを登録する必要性があるため、ルーティング構成で問題が発生することがよくあります。特別...

See all articles