首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我将一个对象放在索引为0的数组中,如何将该对象放入索引1?

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

Stack Overflow用户
提问于 2016-01-05 06:44:55
回答 2查看 54关注 0票数 0

我在一个初学者的Java课堂上。我只知道基本的Java语言。我们刚刚开始了多态性和继承。我的问题是将对象放入数组中。我有一个由10个Runner对象组成的数组,如下所示。

代码语言:javascript
复制
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处的对象?如果它被移除了,当我把一个对象放在一个不同的数组索引中时,对象只是交换数组中的位置,我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2016-01-05 06:48:49

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

如果您稍后设置了raceArray[0] = raceArray[1];,从现在开始,raceArray中的第0和第1项都将引用r2。这意味着r1不再是该数组的引用。这并不意味着r1已经消失了,因为其他东西仍然可以引用它。

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

代码语言:javascript
复制
Runner temp = raceArray[0];
raceArray[0] = raceArray[1];
raceArray[1] = temp;

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

票数 3
EN

Stack Overflow用户

发布于 2016-01-05 06:48:50

数组包含对对象的引用。因此,在执行raceArray[0] = raceArray[1]时,两个内存段都将包含对同一个r2对象的引用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34601244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档