如果我将一个对象放在索引0的数组中,如何将那里的对象放入索引1?

时间:2016-01-04 22:44:55

标签: java arrays swap

我是初学者的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处的对象?如果它被删除,我怎么做到当我将一个对象放在不同的数组索引时,对象只是交换数组中的位置?

2 个答案:

答案 0 :(得分:3)

首先,您不对象存储到数组中,而是在数组中存储对象的引用

如果您之后在raceArray[0] = raceArray[1];的第0项和第0项上设置了raceArray,则引用至r2。这意味着r1不再是该数组的引用。这没有必要意味着r1已经消失,因为其他事情可以引用它。

为了交换位置,您可以使用以下代码:

Runner temp = raceArray[0];
raceArray[0] = raceArray[1];
raceArray[1] = temp;

您所做的是创建一个temp - 一个临时变量 - 引用与索引0处的数组相同的对象,然后覆盖索引{ {1}}使用索引0处的引用,最后使用1中的值覆盖索引1

答案 1 :(得分:3)

Arrays包含对象的引用。因此,当您执行temp时,两个内存段都将包含对同一raceArray[0] = raceArray[1]个对象的引用。