创建一个实例变量,创建Java中的一个新的对象之间的区别是什么?(Difference betwee

2019-09-02 00:12发布

我明白创建对象和创建变量之间的差。 例如:

private int number;
MyClass myObj = new MyClass();

但在这里我要说的是什么这两者之间的区别?

private MusicPlayer player;
player = new MusicPlayer();

MusicPlayer是一类,但正是我们在这里做什么?

Answer 1:

private MusicPlayer player;

在这里,你创建的参考变量MusicPlayer类(但它不会创建一个对象),而不对其进行初始化。 所以你不能使用这个变量,因为它只是不指向任何地方(它为空)。

例如,使用一个Point类:

Point originOne;

可表示如下:


player = new MusicPlayer();

在这里,你分配类型的对象MusicPlayer ,你把它存储在player的参考,让你可以使用它的所有功能。

例如,使用一个Point类,与xy坐标:

Point originOne = new Point(23, 94);

可表示如下:


两条线的组合等同于:

private MusicPlayer player = new MusicPlayer();


Answer 2:

private MusicPlayer player;

声明实例变量命名的player ,但不会对其进行初始化

player = new MusicPlayer();

分配一个值已经宣布的领域。



Answer 3:

private MusicPlayer player;

这是一个声明,这意味着使MusicPlayer的一个新的参考变量,只是一个参考,没有实例将被创建。 因为它指向空不能使用它。

player  = new MusicPlayer();

MusicPlayer()调用MusicPlayer构造, new创建MusicPlayer的情况下, =这种情况下分配给参考player



Answer 4:

类是一类。 Java是一种强类型语言,所以大多数的时候,它需要知道的类型,它在处理的事情。

参考变量简单地保存到一个对象的引用。 因为Java是强类型的,它总是想知道引用的一个变量持有的(即从一类是一类,它想知道的类对象变量的参考点)的类型。

whatEver object1 = new whatEver();
  1. 声明了一个参考变量(object1),并且其类型是什么
  2. 创建类型的新()对象的任何
  3. 分配给所述参考变量对象物1为新的任何对象的引用
  4. 分配是有效的,因为对象的类型和变量的类型同意

接下来是...

private MusicPlayer player;
player  = new MusicPlayer();

上述完成了类似的结果,但在多个步骤。 第1行只规定,可变播放器将坚持类型MusicPlayer的对象的引用。 Java的总是想知道类型的东西在使用之前。

第二行创建类型MusicPlayer的一个新的()对象,并分配它参照可变播放器。 分配是,再次,有效的,因为对象的类型和参考变量的类型一致。



Answer 5:

private MusicPlayer player; 此分配在存储器4字节的空间(或可能更多,在64台机器),可以向在堆中的对象最终指向。 这个对象没有被创建的,所以它不存在,所以player变量指向null值....但需要4个字节的事情。 这本质上是一样保留名为“臭”为您计划自己的狗,但你还没有。

player = new MusicPlayer(); 因为它需要用于类型的对象在堆中尽可能多的空间这件事创建MusicPlayer存在。 该空间等于dunnow的报头中有多少字节,以指示对象的类,并存储其声明的实例变量需要额外的存储器(这意味着附加的4 -或更多-字节声明为实例变量(如果为null)的每个对象的参考和主数据类型的额外字节。这基本上就像确保您有一个名为“臭”的狗。



Answer 6:

这个问题的答案是https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html 。
我将使用例如虚类。 当使用下面的方法,

Fish tuna;

声明通知您将使用名称来引用的数据,其内容是type 类型的编译器。 与原始变量,此声明还保留的存储器用于可变适量。 如果你声明这样的变量,直到真正创建一个对象,并为其分配的值将是不确定的。

当你写下面的语句,

Fish tuna = new Fish();

新操作者通过对一个新的物体分配存储器并返回到该存储器中的参考实例的类。 新的运营商还调用对象的构造函数。

new运算符返回到它创建的对象的引用。 该参考一般被分配到适当的类型的变量。

当你说。因此,

Fish tuna = new Fish();

要创建类型的鱼的变量,它可以容纳鱼的类型的对象,并使用新的运营商正在创建该类型的对象,并给它返回一个参考。



文章来源: Difference between creating an instance variable and creating a new object in Java?
标签: java class