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 types
和reference
types。
reference
types是class
types,interface
types和array
types。
还有一个特殊的null
types。
一个对象是一个dynamic创build的class
types或dynamic创build的array
实例。
reference
types的值是对象的引用。
请参阅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(); }
我希望这有帮助!