目次
まえがき
クラス読み込みメカニズム:
オブジェクトのインスタンス化プロセス:
ホームページ Java &#&チュートリアル Javaのブール値とブール値の違いは何ですか

Javaのブール値とブール値の違いは何ですか

May 05, 2023 pm 07:40 PM
java boolean

まえがき

誰かが質問しましたが、ブール型の値は true と false の 2 種類しかないのではありませんか?彼が定義したプロパティが null 値を持つのはなぜですか?

まず、boolean が Java の基本データ型であり、Boolean が Java のクラスであることを明確にする必要があります。ブール型は、「ゼロの割り当て」フェーズ中にプロパティに false を割り当てます。 Boolean は、「ゼロ値の割り当て」フェーズ中にオブジェクトに null を割り当てるクラスです。

静的属性の場合、クラスのロード時に割り当てられます。通常のクラス属性の場合、オブジェクトがインスタンス化されるときに値が割り当てられます。この 2 つの点は、「クラスロードの仕組み」と「オブジェクトの作成プロセス」を理解するのに役立ちます。

クラス読み込みメカニズム:

  • 読み込み: クラスの完全名に従ってクラスのバイナリ バイト ストリームを取得し、クラスをメモリに読み込み、表現を生成します。クラスの Class オブジェクトは、メソッド領域へのアクセス入口として機能します。 データ

  • 検証: クラス ファイル内のバイト ストリームが JVM 仕様に準拠しているかどうかを検証します

  • 準備:メソッド領域にクラスの静的プロパティ用のメモリを確保し、デフォルト値を初期化します(booleanのデフォルト値はfalse、Booleanのデフォルト値はnull)。

  • 分析: 定数プールの転送 のシンボル参照は直接参照に変換され、オブジェクト参照がポインタに変換されたものとして理解できます。

  • 初期化: 実際にクラス内のコード、静的属性の割り当て、静的ブロックの実行を開始します

オブジェクトのインスタンス化プロセス:

  • クラスがロード済み (親の委任)

  • オブジェクトにメモリを割り当てる Space (ポインタの衝突)

  • ゼロ値の初期化 (false/null)

  • オブジェクト ヘッダー (オブジェクトの生成年齢やその他の情報) を設定します

  • メソッドを実行します (属性の初期化、ステートメント ブロック、構築メソッド) )

つまり、Boolean はロードされただけで、まだインスタンス化されていません。インスタンス化される前にメモリが割り当てられていないため、null になります。

次にプロパティを見てみましょう。 Boolean のラップ方法を理解するには、Boolean の構築メソッドとその構築メソッドを参照してください。 boolean

// final boolean类型的属性,通过构造方法注入值
private final boolean value;

// 构造方法 Boolean a = true 实际上就是调用这个方法
public Boolean(boolean value) {
    this.value = value;
}

// 构造方法
public Boolean(String s) {
    this(parseBoolean(s));
}
ログイン後にコピー

その他の場合 属性とメソッドは自分で見るのが比較的簡単です。 Alibaba の開発マニュアルも非常によく書かれています

Javaのブール値とブール値の違いは何ですか簡単に言うと、boolean で定義された属性には値が必要です。Boolean オブジェクトの値が null の場合、NPE が発生します。開梱プロセス。

シナリオを想像してください: あなたのガールフレンドがあなたに尋ねます: あなたは私のことを愛していますか?しかし、はっきりと聞こえませんでした。あなたがブール型の場合は、「はっきりとは聞こえませんでした (null)」と答えます。ブール型の場合は、「もう好きではない」(false)

、と答えます。殴られるだろう。

補足: ブール値とブール値のパフォーマンスの調査

ブール値と true の場合

ソース コードの観点からは、どちらのパフォーマンスが優れているかは明らかではありません。 Big Boolean 2 つの静的オブジェクトも初期化されました

ソース コードのスクリーンショットは次のとおりです:

Javaのブール値とブール値の違いは何ですかテスト クラスを作成します: テスト メソッド (big Boolean 型 true を取得します)小さい値を取得する時間 (ブール型 true の時間を 100、1000、10000、100000 回渡して、どの時間が短いか多いかを確認します)

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

public class Test {	
	/**
	 * 方法一
	 * 
	 * @return
	 */
	public static Boolean A() {
		return Boolean.TRUE;
	}
	/**
	 * 方法二
	 * 
	 * @return
	 */
	public static boolean D() {
		return true;
	}
	public static String get() {
		long i = 0L;
		long j = 0L;
		for (int n = 0; n < 100000; n++) {
			long startTime = System.nanoTime();
			D();
			long endTime = System.nanoTime();
			long booleanTime = endTime - startTime;
			
			long start = System.nanoTime();
			A();
			long end = System.nanoTime();
			long booleanca = end - start;
			
			
			if (booleanca > booleanTime) {
				i = i + 1;
			} else {
				j = j + 1;
			}
		}
		return i+" "+j;
	}
	public static void main(String[] args) {
        System.out.println("---100000次的比较结果---->"+get());
	}
}
ログイン後にコピー

実行結果は以下の通りです。

以上がJavaのブール値とブール値の違いは何ですかの詳細内容です。詳細については、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)

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプ Java での日付までのタイムスタンプ Aug 30, 2024 pm 04:28 PM

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルの量を見つけるためのJavaプログラム カプセルの量を見つけるためのJavaプログラム Feb 07, 2025 am 11:37 AM

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

See all articles