この記事は、Javaのパラメータ受け渡しメソッドの詳細な説明に関する関連情報を主に紹介します。必要な友人は参照してください
Javaのパラメータ受け渡しメソッドの詳細な説明
Javaを始める初心者が直面する定番のトピックです。この記事はこのトピックを終了することを目的としています。Java には「Java でのパラメータの受け渡しは値による」という格言があります。この文をどう理解すればよいでしょうか。言葉で説明するのは簡単ではありませんし、明確に理解するのは難しいと思います。
前提
まず、値または参照の概念は C++ 言語に由来するものであることを明確にしましょう。参照は中国語の辞書にある単語ではなく、C++ の概念です。「」という記号を覚えていますか。 &「?
なぜこの話題があるのですか?第一に、参照渡しについての理解が不完全であること、第二に、多くの Java 書籍や議論の議論が的を射ていないことです。
パラメーターを値で渡すか参照で渡すかについて一言で言えば、これはパラメーターを渡すメソッドであるため、仮パラメーターと実際のパラメーターにのみ適用されます。ここで話しているのはパラメーター自体であり、サブオブジェクトではありません。またはパラメータオブジェクトの孫オブジェクト。
前提として、C++ コードに進みましょう:
#include <iostream> using namespace std; class User { private: int m_id; public: User(int id=0){m_id = id;} void setId(int id){m_id = id;} int getId(){return m_id;} }; void test0(User t){//按值传参 User s; t = s; t.setId(1002); cout << "test1:" << t.getId() << endl; } void test1(User *t){//按值传参 t = new User();//指针指向了一个新对象,外面实参没变 t->setId(1002); cout << "test1:" << t->getId() << endl; } void test2(User* & t){//按引用传参 t = new User();//指针指向了一个新对象,外面实参也跟着变了 t->setId(1002); cout << "test2:" << t->getId() << endl; } int main(int argc, char const *argv[]) { cout<< "\npass by ref:"<<endl; User* t = new User(); t->setId(1001); cout << t->getId() << endl; test2(t); cout << t->getId() << endl; cout<< "\npass by value:"<<endl; t = new User(); t->setId(1001); cout << t->getId() << endl; test1(t); cout << t->getId() << endl; return 0; }
出力結果:
pass by ref: 1001 test2:1002 1002 pass by value: 1001 test1:1002 1001
C++ の概要:
値渡し、その後、仮パラメータが関数内で変更されて、新しいオブジェクトであり、外部の実際の高麗人参は影響を受けません。
参照によって渡された場合、仮パラメータは新しいオブジェクトを指すように関数内で変更され、外部の実パラメータも変更されます。
問題を説明することを目的としており、コードにはメモリ リークがある可能性があります。
Javaの使い方:
package com.pollyduan.bean; @Data public class User { private Integer id; public static void testObject(User t){ t=new User();//指向了一个新对象,外面实参没变 t.setId(1002); System.out.println("testObject="+t); } @Test public void testObject(){ User user=new User(); user.setId(1001); System.out.println("user="+user); testObject(user); System.out.println("user="+user); } }
出力結果:
user=User(id=1001) testObject=User(id=1002) user=User(id=1001)
javaの概要:
C++のロジックと比較してみてください。
以上がJavaでのパラメータ受け渡しメソッドのサンプルコード共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。