Java中的实例究竟是什么?

时间:2011-02-26 09:22:07

标签: java oop object reference instance

对象,实例和引用有什么区别?他们说他们必须为他们的应用程序创建一个实例?这是什么意思?

10 个答案:

答案 0 :(得分:69)

对象和实例是相同的东西

我个人更喜欢在引用特定类型的特定对象时使用“实例”一词,例如“Foo类型的实例”。但是在谈论一般的对象时,我会说“对象”而不是“实例”。

引用既可以引用特定对象,也可以是空引用。


  

他们说他们必须为他们的应用程序创建一个实例。这是什么意思?

他们可能意味着你必须写下这样的东西:

Foo foo = new Foo();

如果您不确定应该实例化哪种类型,请联系应用程序的开发人员并要求提供更完整的示例。

答案 1 :(得分:11)

“应用程序的实例”意味着什么。

“对象”和“实例”是一回事。有一个“类”定义结构,以及该类的实例(使用new ClassName()获得)。例如,有Car类,并且有不同属性的实例,如里程数,最大速度,马力,品牌等。

在Java上下文中,引用是一个变量* - 它指向一个对象/实例。例如,String s = null; - s是一个引用,当前不引用任何实例,但可以引用String类的实例。

* Jon Skeet记录了变量和引用之间的区别。看他的评论。当你调用一个方法 - 值传递时,Java是如何工作的一个重要区别。

  

s的值是参考。区分变量和值,对象和引用非常重要。

答案 2 :(得分:8)

我认为Object = Instance。 Reference是对象的“链接”。

Car c = new Car();

变量c存储对Car类型对象的引用。

答案 3 :(得分:7)

当您使用关键字new例如JFrame j = new JFrame();时,您正在创建类JFrame的实例。

  

new运算符实例化a   通过为新的内存分配内存   对象并返回引用   记忆。
  注意:短语“实例化一个类”意味着同样的事情   “创造一个对象。”当你创建   一个物体,你正在创造一个   因此,一个类的“实例”   “实例化”一个班级。

看看这里
Creating Objects


  

Java编程的类型   语言分为两个   类别:primitive types和   reference种类型   reference类型   是class类型,interface类型和   array种类型   还有一个特别的   null类型。
  一个对象是   动态创建的实例   class类型或动态创建   array
  reference的值   type是对象的引用。

有关详细信息,请参阅Types, Values, and Variables

答案 4 :(得分:5)

Computer c= new Computer()

这里的对象是从Computer类创建的。名为c的引用允许程序员访问该对象。

答案 5 :(得分:4)

主要区别在于你说ClassName obj = null;你只是为那个类创建一个对象。它不是该类的实例。

此语句将仅为静态meber变量分配内存,而不是正常成员变量。

但是当你说ClassName obj = new ClassName();您正在创建该类的实例。这个staement将分配所有成员变量的内存。

答案 6 :(得分:3)

基本上对象和实例是可互换使用的两个单词。 类是对象的模板,对象是类的实例。

答案 7 :(得分:1)

“创建一个类的实例”怎么样,“你正在上一个类并根据改变的输入创建一个将改变的类的新变量”

库中名为Nacho的类

变量Libre来保存将要改变的“实例”

Nacho Libre =新的Nacho(变量,扫描仪输入,或其他任何东西,这是接受更改的地方然后将值放在等号左侧的“Libre”中(你知道“Nacho Libre =新的Nacho(Scanner.in)“”Nacho Libre“位于=的左边(这不是技术谈话,这是我解释它的方式)

我认为这比说“类型实例”或“类实例”更好。真正的重点是它只需要详细说明......“类型或类的实例”对于初学者来说还不够好.....哇,它就像绕口令而你的大脑不能专注于绕口令很好......那个“实例”这个词非常讨厌而且仅仅它的声音让我疯狂......它需要更多的细节......它需要更好地分解。我不得不谷歌什么“实例”只是为了让我的方向伸直.....试着对你的奶奶说“课堂实例”....哎呀!

答案 8 :(得分:1)

实例的字面含义是"某个例子或单个事件。"这与Java术语中的Instance非常接近。

Java遵循动态加载,这与C语言不同,在运行时将所有代码复制到RAM中。让我们举一个例子。

   class A
    {
    int x=0;
    public static void main(String [] args)    
     {
    int y=0;
    y=y+1;
    x=x+1;
     }   

    }

让我们编译并运行此代码。

步骤1:生成javac A.class(生成.class文件,即字节代码)

第2步:java A(.class文件转换为可执行代码)

在步骤2中,将main方法和静态元素加载到RAM中以便执行。在上面的场景中,直到第y = y + 1行才会出现问题。但是每当执行x = x + 1时,就会抛出运行时错误,因为 JVM不知道在主方法之外声明的是什么(非静态)。

因此,如果通过某种方式可以在内存中提供.class文件的内容以供CPU执行,那么就不会有更多问题。

这是通过创建对象完成的,关键字执行此作业。

" 在运行时为RAM中的内存(此处为.class文件)保留内存的概念称为实例"

Object也称为类的实例。

答案 9 :(得分:0)

  

对象 ,也是 称为实例 ,是具有相关功能的程序的自包含元素和数据。在大多数情况下,您只使用该类创建实例,然后使用这些实例。

     

- 定义取自“Sams在21天内自学Java”一书。

假设您有2个类,公共类MainClass 公共类Class_2 ,并且您希望在MainClass中创建 Class_2的实例

这是一种非常简单和基本的方法:

public MainClass()      /*******this is the constructor of MainClass*******/

{

 Class_2 nameyouwant = new Class_2();

}

我希望这有帮助!