当前位置: 首页 > 知识库问答 >
问题:

ArrayList实际存储的是什么-对对象或实际对象的引用?

陶腾
2023-03-14

假设我的代码是这样的:

ArrayList list = new ArrayList();
Student s = new Student();    // creating object of Student class

myList.add(s);      // Here am confused ...

/* myList contains just the reference variable to the Student object, OR

   myList contains the actual Student object (memory allocation for name, rollNo etc)  ??   
*/

简而言之,使用add()将对象添加到ArrayList时:

ArrayList是“对对象的引用”的列表,还是“实际对象”的列表???

共有3个答案

师腾
2023-03-14

ArrayList存储对对象的引用。我建议您使用ArrayList的通用版本。您的声明将是:

ArrayList <Student> list = new ArrayList<>();

您将受益于编译时的类型检查。

另请阅读http://en.m.wikipedia.org/wiki/Object_copy有关对象复制概念以及Java和C所采用的不同策略的说明。

慕弘深
2023-03-14

对象存储在堆上,而不是“在”arraylist中。正如您所说,arraylist存储对象所在位置的引用。

华安民
2023-03-14

在Java中,您从不传递实际对象。您总是在处理引用,它本质上只是内存中存储对象的位置的地址。

由于您从不使用实际对象,ArrayList包含对存储在其他位置(内存中称为堆的位置)的对象的引用数组。

 类似资料:
  • 我的Android应用程序中有一个ArrayList,其中有两个项目。然而,它的size方法返回3。我知道这听起来很简单也很愚蠢,但事情是这样的: 为什么会发生这种情况?ArrayList的大小如何返回不正确的数字?当我迭代列表时,这会导致空指针异常。

  • 问题内容: 在下面的程序中,我试图在测试用例中将mockito与junit一起使用。但是我看不到Mokito如何帮助创建用于测试的对象?我在这里看不到什么特别之处,因为好像mokito实例化了实际对象。 我的实际班级( MyClass.java ) 它是在模拟对象,还是像在对象上注入(DI)一样?我感谢您的帮助! 问题答案: 您的测试不会测试您的任何代码。它测试Mockito是否工作正常。 当我介

  • Reflector是mybatis中定义的一个用于描述类定义信息的对象,它缓存了指定对象的类型,可读/可写属性,getter/setter方法,以及构造器等信息,并提供了操作这些属性或方法的入口,有效的简化针对指定对象的方法和属性的反射操作。 Reflector对象的定义和实现涉及到的东西比较多,我们先简单了解一下这个类的属性定义: public class Reflector { /**

  • 问题内容: 我对Python 3中的和类有些困惑。也许有人可以消除我的困惑或提供一些其他信息。 我目前的理解是,每个类(除外)都从称为的基类继承。但是每个类(包括)也是该类的一个实例,它是自身的实例,并且也从继承。 我的问题是: 是否有一个原因/设计决策,为什么是的实例并从中继承?对象的/ class是否也可以是对象本身? 类()如何成为其自身的实例? 哪一个是真正的基类或? 我一直认为这将是最“

  • 我是一个新手程序员,所以我需要帮助理解存储对象的数组和数组列表之间的区别。在这里,我已经创建了这两个,但有人能解释一下它们的区别吗?是一个只能存储引用,而另一个不能存储引用还是其他什么? } 导入java。util。ArrayList;导入java。util。扫描仪; }

  • 我正在尝试对函数返回的值发出警报,并且在警报中得到以下信息: 下面是JavaScript代码: 是我试图检查的函数。