1

質問がばかげている場合は申し訳ありませんが、私はJavaプログラミングの初心者です...そこに到達して値を変更するまで、クラスごとに移動するメソッドを使用してクラスの値を変更するかどうかを知る必要があります(1)、そのクラスを返し、メインの値を変更するのと同じですか (2)? (2) の場合のように、ある種のポインターを作成します...

    public class User{
       //methods and constructor...
       String name = "";
       public String getName(){return name;}
       public void setName(String name){this.name = name;}
    }

    public class UserList{
       //...
       User [] list = new User();
       //some User's inside list...
       public void setName(String name){
          list[0].setName(name);
       }
       public User getUser(){
          return list[0];
       }
    }

public class Main{
   public static void main(String[] args){
      UserList ul = new UserList();
      //is this (1):
      ul.setName("randomname");
      // the same as this (2):
      ul.getUser().setName("randomname");

   }
}

(2)で実際にユーザーを返すか、ユーザーのメモリへの「ポインター」を作成するかはわかりません。お待ちいただいてありがとうございます!

4

2 に答える 2

1

はい、同等です。2 つの関数呼び出しは、メモリ内の同じリストを指しています。

目的の名前にアクセスlist[0]して設定するため、のインデックス 0 がlist目的の名前に設定されます。

もう 1 つはリストを取得し、インデックス 0 を取得して目的の名前に設定します。全体的な効果は同じです。

オブジェクトはメモリ内の場所への参照であることを忘れないでください。配列はオブジェクト参照を保持します。この配列オブジェクトのインデックスを返すと、参照されたオブジェクトのメモリ内の場所が返されます。その結果、そのオブジェクトが変更されます。ただし、 を呼び出すとlist[0]、インデックス 0 にアクセスし、メモリ内に同じオブジェクトが与えられます。したがって、正味の効果は同じです。

于 2013-04-11T20:22:25.507 に答える
0

まったく同じ!!インスタンス変数名を直接設定するか、オブジェクトを返してからインスタンス変数を変更することにより、常に同じオブジェクト list[0] を参照しています。

于 2013-04-11T20:32:07.897 に答える