ホームページ Java &#&チュートリアル Javaで値を渡すにはどうすればよいですか?

Javaで値を渡すにはどうすればよいですか?

Nov 15, 2019 pm 03:03 PM
java パス値

値渡しには基本的に値渡しと参照渡しの 2 つの方法があることは誰もが知っていますが、JAVA では値渡しと参照渡しのどちらでしょうか?以下の記事で紹介していますので、ご参考になれば幸いです。

Javaで値を渡すにはどうすればよいですか?

値の受け渡し: は、関数呼び出し時に実際のパラメータのコピーをコピーし、それらを仮パラメータに渡すことを指します。関数内で変更できますが、実際のパラメータ値には影響しません。

参照渡し: 関数呼び出し時に実パラメータのアドレスを仮パラメータに直接渡すことを指し、関数内のパラメータの変更が実パラメータに影響します。価値。

Java で値を渡すにはどうすればよいですか?

Java の値渡しメソッド: 値渡し (すべての変更はメソッド本体にのみ制限され、メソッド本体の外では、いかなる変更操作も無効になります)。 [推奨学習: java コース ]

プログラムを使用して、値のみが Java に渡されることを確認できます

/**
 * 验证java中只有值传递
 */
class User{    
    private String name;    public String getName() {        return name;
    }    public void setName(String name) {        this.name = name;
    }
}public class TestValue {    public static void change(User user2,int a2){
        System.out.println("改变之前:"+user2.getName()+",a2="+a2);
        
        user2.setName("李四"); //改变 user2 的 name 值
        a2 = 10; //改变 a2 的值
        System.out.println("改变之后:"+user2.getName()+",a2="+a2);
        
        user2 = new User(); //将 user2 重新指向一个新对象
        user2.setName("王五");
        System.out.println("重新指向一个新对象后:"+user2.getName());
    }    public static void main(String[] args){
        User user1 = new User();
        user1.setName("张三"); //初始化 user1 的 name 为张三
        int a1 = 5; //初始化 a1 的值为 5
        change(user1,a1); //调用方法验证传值方式
        System.out.println("调用方法后:"+user1.getName()+",a1="+a1);
    }
}
ログイン後にコピー

このプログラムを実行すると、出力結果は次のようになります:

改变之前:张三,a2=5
改变之后:李四,a2=10
重新指向一个新对象后:王五
调用方法后:李四,a1=5
ログイン後にコピー

結果分析

Javaで値を渡すにはどうすればよいですか?

## 上の図を分析の補助として使用してみましょうこの段落のプログラムでは、まず

User クラスを定義し、次にテスト クラスで user1 という名前の User オブジェクトをインスタンス化し、それに # の値を割り当てます。 # #名前 = '張三'。 この時点で、メモリ内では、

図 1

に示すように、オブジェクトのインスタンス化はヒープ内のメモリの一部を開くことと同等であり、メモリ アドレスは # です。 ##017 、この時点で、このオブジェクトの参照は user1 で、メモリ アドレスは 001 です。オブジェクトのアドレスをメモリに保存します。オブジェクトを指すことを意味します。 次に、メソッド change()

を呼び出して、

user1name 値を変更して、Java Way で渡された値を確認します。 。 実パラメータとして user1

change() メソッドに渡し、仮パラメータ user2 がこの実パラメータを受け入れます。パラメータを渡す 2 つの方法の違いが明らかになります。値によって渡された場合、定義どおりになります。 図 2 に示すように、

user2

user1 のコピーです。つまり、パラメーターを渡すときは、 user1 (それ自体がオブジェクトへの参照)、user2 という名前のコピーを作成しました。これもオブジェクトへの参照であり、user1user2は、この時点では同じオブジェクトです。 そして、参照によって渡される場合、図 5 に示すように、パラメータを渡すときに、

user1

が仮パラメータに直接渡されます。名前を user2 に変更しただけですが、本質的に user1user2 は実際には同じです。オブジェクトへの参照です。 次に、出力結果を分析しましょう。値渡しでも参照渡しでも、すべて同じオブジェクトを指しているため、1 行目の出力結果は 张三 でなければなりません。 2 行目の出力では、同じオブジェクトが変更され、値も変更されるため、どのメソッドが使用されているかはまだわかりません。鍵となるのは 3 行目と 4 行目の出力です。

現時点では、user2 を新しいオブジェクトにリダイレクトし、このオブジェクトに値を割り当てます

name = '王五'

(参照渡しの場合)。次に、user1 も新しいオブジェクトを指すようにポインターを変更します。最後の行のメソッドを呼び出した後の出力結果は、3 行目の 王五 と同じになりますが、実際、出力は 李思 です。これは、user1user2 が実際には同じではないことを示しています。 実際の呼び出しプロセスは 図 2~

図 4

に示されているため、user2 は新しいオブジェクトを指します。# オブジェクト##user1 が指すものは変更されておらず、元のオブジェクトのままです。 基本型パラメータの場合、a1 の値は最後まで変化しておらず、メソッドの実行時に a2

a1 の 1 つであることを示します。実行されコピーされます。 User オブジェクトなどの参照型パラメータの場合、メソッドの呼び出し時に、その参照 user1

が実際のパラメータとして実際に使用され、それが に渡されます。フォーム 参照は、参照参照

user2 のコピーになりますが、これは 2 つの参照 (a1a2 の関係など) です。 しかし、これは同じオブジェクトを指しており、すべての操作は同じオブジェクトに対するものです。

終了

上記の分析を通じて知ることができます。 Java には値渡しの方法が 1 つしかありません。 ただし、参照型の場合、渡されるパラメータはオブジェクトへの参照です。

以上が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