我不确定我的措词是否正确,但对于方法如何分辨正在处理的对象感到困惑。换句话说,这是您如何指定对特定对象起作用的方法?
例如,如果我创建两个使用某种数组的对象。假设obj1和obj2。如果然后我实现某种add()方法,该方法将向数组添加一些值。如何区分obj1.add(E值)和obj2.add(E值)。
我尝试创建一个数组,但是问题是obj1.add()和obj2.add()将编辑同一数组,并且我希望它们分别工作。在构造函数中,它给数组指定大小。
class Example{
int arr[];
Example(int a) {
int size = a;
arr = new int[a];
}
add(int value) {
// adds some value to the array
}
public static void main(String[] args) {
Example obj1 = new Example(5);
Example obj2 = new Example(10);
obj1.add(1);
obj2.add(2);
}
}
是否可以创建可以在其自己的数组上工作的不同对象?我非常困惑,因为add总是会修改arr,并且只有一个数组。
答案 0 :(得分:0)
所以,这是一个真正的初学者问题,但是我将尽力解释它,因为它一开始就很难引起您的注意。
这样做的时候
Example obj1 = new Example(5);
Example obj2 = new Example(10);
您正在PC的RAM中创建两个对象。
它们每个都有一个单独的内存地址,并占用所需的空间。
您可以在RAM中看到对象,就像大街上的房子一样。
Example Benny = new Example(5);
Example Jacob = new Example(10);
这条街现在有两所房子。本尼和雅各布。
本尼的门牌号码是105
雅各的门牌号码是42
他们的房屋建造完全一样。唯一的区别是Benny可以接受5位客人,而Jacob可以接受10位客人。
当出租车来添加客人时,他得到命令,将客人添加到105号街道。出租车驶向105号街道,忽略任何非105号房屋,并将该客人添加到该房屋中
然后他返回调度并获得命令,将客人添加到42号街道。然后,他开车前往42号街道,将客人添加到该房屋。
由于地址不同,所以从不混淆将房客添加到哪栋房屋。在此设置中,房屋不共享宾客名额。
我在下面添加了一个diagran,以表明它们具有不同的列表和不同的流程。
我希望这可以帮助您了解其工作原理。
答案 1 :(得分:0)
我想这很容易做到。您可以在两个不同的对象中维护数组,如下所示:
class Example{
int arr[];
Example(int a)
{
int size = a;
this.arr= new int[a];
}
void add(int value)
{
// adds some value to the array
//your logic to insert values in the array
}
public static void main(String args[])
{
Example obj1 = new Example(5);
Example obj2 = new Example(10);
obj1.add(1);
obj2.add(2);
obj1.add(3);
obj2.add(4);
for(int i=0;i<obj1.arr.length;i++){ //obj1.arr is used to access the array of that object
System.out.println(obj1.arr[i]); //just for printing purpose
}
for(int j=0;j<obj2.arr.length;j++){
System.out.println(obj2.arr[j]); //just for printing purpose
}
}
}
在上面的代码中,可以对数组(this.arr)使用 this 关键字,以不同方式维护不同对象中的数组。
希望这对您有所帮助。
答案 2 :(得分:0)
`公共类示例{ int arr []; int currentElementsInArray = 0; //这是数组中当前元素的数量
Example(int a) {
int size = a;
arr = new int[a];
}
public void add(int value) {
// adds some value to the array
this.arr[this.currentElementsInArray++]= value; /*this will add the incoming element to the next
vacant position of the array*/
}
public static void main(String[] args) {
Example obj1 = new Example(5);
Example obj2 = new Example(10);
obj1.add(1);
obj1.add(1);
obj1.add(5);
obj2.add(2);
obj2.add(4);
obj2.add(22);
//prints the elements in the first array
for(int i=0 ; i < obj1.currentElementsInArray ; i++){
System.out.println(obj1.arr[i]);
}
//prints the elements in the second array
for(int j=0 ; j < obj2.currentElementsInArray ; j++){
System.out.println(obj2.arr[j]);
}
}
}`
运行此。将为两个对象分别创建两个数组。