Java中的实例究竟是什么?

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

一个对象和一个实例是一回事

就我个人而言,在引用特定types的特定对象(例如“Footypes的实例”)时,我更喜欢使用“实例”一词。 但是在谈论对象时,我会说“对象”而不是“实例”。

引用或者引用特定对象,否则可以是空引用。


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

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

Foo foo = new Foo(); 

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

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

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

在Java上下文中,引用是一个variables* – 它指向一个对象/实例。 例如, String s = null;s是一个引用,目前引用没有实例,但可以引用一个String类的实例。

Jon Skeet对variables和参考文献之间的区别做了说明。 看到他的评论。 当调用一个方法时,Java是如何工作的,这是一个重要的区别 – 按值传递。

s的值是一个参考。 区分variables和值以及对象和引用是非常重要的。

我认为这个对象=实例。 引用是一个对象的“链接”。

 Car c = new Car(); 

variablesc存储对Cartypes的对象的引用。

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

new运算符通过为新对象分配内存并返回对该内存的引用来实例化类。
注意:短语“实例化类”与“创build对象”意思相同。 当你创build一个对象时,你正在创build一个类的“实例”,因此“实例化”一个类。

看看这里
创build对象


Java编程语言的types分为两类: primitive typesreferencetypes。
referencetypes是classtypes, interfacetypes和arraytypes。
还有一个特殊的nulltypes。
一个对象是一个dynamic创build的classtypes或dynamic创build的array实例。
referencetypes的值是对象的引用。

请参阅types,值和variables以获取更多信息

 Computer c= new Computer() 

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

基本上对象和实例是交替使用的两个单词。 一个类是一个对象的模板,一个对象是一个类的实例。

主要的不同之处在于当你说ClassName obj = null; 你只是为这个类创build一个对象。 这不是该类的一个例子。

这个语句只会为静态的mebervariables分配内存,而不是正常的成员variables。

但是当你说ClassName obj = new ClassName(); 你正在创build一个类的实例。 这个staement会分配所有的成员variables。

“创build一个类的实例”怎么样,“你正在学习一个类,并创build一个新的variables,这个类会根据改变的input而改变”

图书馆里的class级叫做纳乔

variablesLibre来保存将会改变的“实例”

Nacho Libre =新的Nacho(variables,扫描器input,或任何在这里,这是接受更改的地方,然后将值放在等号左侧的“Libre”(你知道“Nacho Libre = new Nacho Scanner.in)“”纳乔自由“(Nacho Libre)在=(这不是技术性的谈话,这是我解释它的方式)的左边,

我认为这比说“types的实例”或“类的实例”更好。 真正重要的是它只是需要更多的详细说明….“types或类的实例”对于初学者来说是不够好的……哇,它像一个绕口令,你的大脑不能集中在绕口令非常好….这个“实例”这个词很烦人,它的声音使我疯狂….它要求更多的细节…..它要求更好的分解。 我不得不谷歌什么“实例”的意思只是为了让我的轴承直…..试着对你的奶奶说“类的例子”…嗨!

实例的文字意义是“事物的一个例子或单一事件”。 这与Java术语中的实例非常接近。

Java遵循dynamic加载,它不像C语言,所有的代码在运行时被复制到RAM中。 让我们以一个例子来捕捉这个。

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

让我们编译并运行这个代码。

第一步:javac A.class(生成的.class文件即字节码)

第2步:java将一个(.class文件转换成可执行代码)

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

所以如果通过某种方式在CPU内存中提供了.class文件的内容,那么就没有更多的问题了。

这是通过创build对象和关键字NEW来完成这个工作。

在运行时为硬盘(这里是.class文件)内容预留RAM中的内存的概念被称为实例

对象也被称为类的实例。

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

– 从“萨姆斯21天教你自己的Java”一书中的定义。

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

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

 public MainClass() /*******this is the constructor of MainClass*******/ { Class_2 nameyouwant = new Class_2(); } 

我希望这有帮助!