Appearance
**使用字面量**
如使用字符串字面量(用双引号括起来的字符序列)可以创建新的String类实例,该实例的值为该字符串。这种做法只适合String类和其它表示基本数据类型的类如Integer和Double;要创建其他类的实例,需要使用new运算符。
数字和字符基本类型不会创建对象,只会创建数字和字符,这样可以提高效率;也可以使用对象来表示基本类型值。
**n****ew****操作符**
要创建对象,可以使用new操作符和要创建的对象所属类的名称,并加上圆括号,如下:
String name = new String("Hal Jordan");
括号里可以为空,在这种情况下,创建的将是最简单、最基本的对象;
也可以包含参数,这些参数决定了对象的实例变量的初始值和其它初始量。如下:
Random seed = new Random(606843071);
Point pt = new Point(0,0);
圆括号中可包含的参数个数和类型由类本身决定,这是通过一种叫做构造函数(constructor)的特殊方法定义的。如果您使用类创建对象时,提供的参数的数目和类型不正确(或者在需要参数时,您没有提供),则编译程序时将出错。
当您使用运算符new时,将发生如下几件事:
创建给定类的实例,为它分配内存,调用给定类定义的构造函数。构造函数是一种创建新实例的方式。构造函数初始化新对象及其变量,创建该对象所需的其他对象,并执行初始化该对象所需的其他操作。
同一个类可以有多个构造函数,每个构造函数的参数数目和类型各不相同。使用new时,您可以在参数列表中指定不同的参数,这样将调用相应的构造函数。
在同一个类中,两个构造函数的参数数目和类型不能都相同,因为参数数目和类型是区分构造函数的唯一途径。
如果类没有定义任何构造函数,创建这个类的对象时,默认将调用没有参数的构造函数。这个构造函数所做的唯一工作是,调用其超类中不接收任何参数的构造函数。
只有没有定义任何构造函数的类才有默认构造函数。只要您在类中定义了一个构造函数,它就不会再有不带任何参数的默认构造函数。