検索
ホームページJava&#&チュートリアルJavaでのパラメータの受け渡し(値の受け渡しのみ、参照の受け渡しはなし)

参照変数の属性値を変更できるのはなぜですか?以下の答えをご覧ください。

Javaでのパラメータの受け渡し(値の受け渡しのみ、参照の受け渡しはなし)

#java のデータ型

Java のデータ型は、基本型と参照型の 2 つのカテゴリに分類されます。これに対応して、変数も基本型と参照型の 2 つの型に分類されます。

基本型変数は元の値を保存します。つまり、それが表す値は値そのものです。

参照型変数によって保存される値は参照値であり、「参照」 value" はメモリ空間のアドレスを指し、オブジェクト自体ではなく、オブジェクトへの参照を表します。オブジェクト自体は、参照値で表されるアドレスに格納されます。

基本的なタイプには、byte、short、int、long、char、float、double、Boolean、returnAddress が含まれます。

参照型には、クラス、インターフェイス型、配列が含まれます。

Java には値の転送しかありません

日常のコーディングでは、次のような現象がよく見られます:

1. 基本的な型パラメータの場合、メソッド内 本体内でパラメータを再割り当てしても、元の変数の値は変更されません。

2. 参照型パラメータの場合、メソッド本体内のパラメータへの参照を再割り当てしても、元の変数が保持する参照は変更されません。

3. パラメーターは、元の変数の値を変更せずにメソッド本体内で操作されます。

4. 参照型パラメータの場合、メソッド本体はパラメータが指すオブジェクトのプロパティを操作し、元の変数が指すオブジェクトのプロパティ値を変更します。

例:

public class Main {
    private static void getMiddleOne(boolean b, Boolean boo, Boolean[] arr){
        b = true;
        boo = new Boolean(true);
        arr[0] = true;
    }
       //测试
    public static void main(String[] args) {
        boolean b = false;
        Boolean boo = new Boolean(false);
        Boolean[] arr = new Boolean[]{false};
        getMiddleOne(b, boo, arr);
        System.out.println(b);
        System.out.println(boo.toString());
        System.out.println(arr[0]);
        /**
        * output:
        * false
        * false
        * true
        */
    }
}

次の 2 点を理解していれば、上記の現象に答えることができます:

1. 基本的なデータ型value は値そのものなので、例の b の値は false です。ラッパー クラスが自動的にボックス化およびボックス解除するため、基本型と同じように処理できるため、例の boo の値は false です。 ; 配列は参照型なので、 arr 値は Boolean[] への参照です。

2. Java では、値の転送のみが行われ、参照の転送は行われないため、getMiddleOne メソッドに渡される 3 つのパラメーターは、b の値のコピー、boo の値のコピー、および arr の値のコピーです。

上記の 2 点から明らかですが、getMiddleOne メソッドで実行される b=true と boo = new Boolean(true) は、そのコピーに新しい値を代入するため、元の変数の値は変わりません。 ; 同様に、arr[0] = true は、arr のコピーが指す配列の最初の要素に true をコピーします。arr の値と arr のコピーの値は両方とも配列への参照であるため、コピーarr が指す配列と arr が指す配列は同じであるため、arr がコピーした配列の要素を変更すると、元の変数 arr にも影響します。

概要

Java では、値のみが渡されます。基本型は値のコピーを渡し、参照型は参照のコピーを渡します。

以上がJavaでのパラメータの受け渡し(値の受け渡しのみ、参照の受け渡しはなし)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

メモ帳++7.3.1

メモ帳++7.3.1

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