我在一个初学者的Java课堂上。我只知道基本的Java语言。我们刚刚开始了多态性和继承。我的问题是将对象放入数组中。我有一个由10个Runner对象组成的数组,如下所示。
import java.util.*;
public class Race
{
public static void main(String []args)
{
Runner r1 = new Runner("Jack Sprat", 10);
Runner r2 = new Runner("Cecil Litwack", 8);
Runner r3 = new Runner("Dina Might", 3);
Runner r4 = new Runner("Seymour Butts", 4);
Runner r5 = new Runner("Ima reject", 1 );
Runner r6 = new Runner("Ivan Earache", 9);
Runner r7 = new Runner("Ace Ventura", 6);
Runner r8 = new Runner("Joan O'Farc", 7);
Runner r9 = new Runner("Jack O'Lantern", 5);
Runner r10 = new Runner("Jim Nasium", 2);
Runner[] raceArray = new Runner[10];
raceArray[0] = r1;
raceArray[1] = r2;
raceArray[2] = r3;
raceArray[3] = r4;
raceArray[4] = r5;
raceArray[5] = r6;
raceArray[6] = r7;
raceArray[7] = r8;
raceArray[8] = r9;
raceArray[9] = r10;假设我想将索引1中的对象放到索引0中,那么索引0中的对象会转到索引1中吗?或者将从数组中删除索引0处的对象?如果它被移除了,当我把一个对象放在一个不同的数组索引中时,对象只是交换数组中的位置,我该怎么做呢?
发布于 2016-01-05 06:48:49
首先,不要将对象存储到数组中,而是将对对象的引用存储在数组中。
如果您稍后设置了raceArray[0] = raceArray[1];,从现在开始,raceArray中的第0和第1项都将引用r2。这意味着r1不再是该数组的引用。这并不意味着r1已经消失了,因为其他东西仍然可以引用它。
为了交换位置,您可以使用以下代码:
Runner temp = raceArray[0];
raceArray[0] = raceArray[1];
raceArray[1] = temp;您要做的是创建一个temp -一个临时变量-引用与索引0处的数组相同的对象,然后使用索引1处的引用覆盖索引0,最后使用temp中的值覆盖索引1。
发布于 2016-01-05 06:48:50
数组包含对对象的引用。因此,在执行raceArray[0] = raceArray[1]时,两个内存段都将包含对同一个r2对象的引用。
https://stackoverflow.com/questions/34601244
复制相似问题