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