我明白创建对象和创建变量之间的差。 例如:
private int number;
MyClass myObj = new MyClass();
但在这里我要说的是什么这两者之间的区别?
private MusicPlayer player;
player = new MusicPlayer();
MusicPlayer
是一类,但正是我们在这里做什么?
我明白创建对象和创建变量之间的差。 例如:
private int number;
MyClass myObj = new MyClass();
但在这里我要说的是什么这两者之间的区别?
private MusicPlayer player;
player = new MusicPlayer();
MusicPlayer
是一类,但正是我们在这里做什么?
private MusicPlayer player;
在这里,你创建的参考变量MusicPlayer
类(但它不会创建一个对象),而不对其进行初始化。 所以你不能使用这个变量,因为它只是不指向任何地方(它为空)。
例如,使用一个Point
类:
Point originOne;
可表示如下:
player = new MusicPlayer();
在这里,你分配类型的对象MusicPlayer
,你把它存储在player
的参考,让你可以使用它的所有功能。
例如,使用一个Point
类,与x
和y
坐标:
Point originOne = new Point(23, 94);
可表示如下:
两条线的组合等同于:
private MusicPlayer player = new MusicPlayer();
private MusicPlayer player;
声明实例变量命名的player
,但不会对其进行初始化 。
player = new MusicPlayer();
分配一个值已经宣布的领域。
private MusicPlayer player;
这是一个声明,这意味着使MusicPlayer的一个新的参考变量,只是一个参考,没有实例将被创建。 因为它指向空不能使用它。
player = new MusicPlayer();
MusicPlayer()
调用MusicPlayer构造, new
创建MusicPlayer的情况下, =
这种情况下分配给参考player
。
类是一类。 Java是一种强类型语言,所以大多数的时候,它需要知道的类型,它在处理的事情。
参考变量简单地保存到一个对象的引用。 因为Java是强类型的,它总是想知道引用的一个变量持有的(即从一类是一类,它想知道的类对象变量的参考点)的类型。
whatEver object1 = new whatEver();
接下来是...
private MusicPlayer player;
player = new MusicPlayer();
上述完成了类似的结果,但在多个步骤。 第1行只规定,可变播放器将坚持类型MusicPlayer的对象的引用。 Java的总是想知道类型的东西在使用之前。
第二行创建类型MusicPlayer的一个新的()对象,并分配它参照可变播放器。 分配是,再次,有效的,因为对象的类型和参考变量的类型一致。
private MusicPlayer player;
此分配在存储器4字节的空间(或可能更多,在64台机器),可以向在堆中的对象最终指向。 这个对象没有被创建的,所以它不存在,所以player
变量指向null
值....但需要4个字节的事情。 这本质上是一样保留名为“臭”为您计划自己的狗,但你还没有。
player = new MusicPlayer();
因为它需要用于类型的对象在堆中尽可能多的空间这件事创建MusicPlayer
存在。 该空间等于dunnow的报头中有多少字节,以指示对象的类,并存储其声明的实例变量需要额外的存储器(这意味着附加的4
-或更多-字节声明为实例变量(如果为null)的每个对象的参考和主数据类型的额外字节。这基本上就像确保您有一个名为“臭”的狗。
这个问题的答案是https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html 。
我将使用例如虚鱼类。 当使用下面的方法,
Fish tuna;
声明通知您将使用名称来引用的数据,其内容是type 类型的编译器。 与原始变量,此声明还保留的存储器用于可变适量。 如果你声明这样的变量,直到真正创建一个对象,并为其分配的值将是不确定的。
当你写下面的语句,
Fish tuna = new Fish();
新操作者通过对一个新的物体分配存储器并返回到该存储器中的参考实例的类。 新的运营商还调用对象的构造函数。
new运算符返回到它创建的对象的引用。 该参考一般被分配到适当的类型的变量。
当你说。因此,
Fish tuna = new Fish();
要创建类型的鱼的变量,它可以容纳鱼的类型的对象,并使用新的运营商正在创建该类型的对象,并给它返回一个参考。