Java类对象

类是具体的抽象,而对象是类的具体实现。在面向对象编程中,每个对象都有自己的行为和属性,而类就是把具有相同行为和属性的对象抽象在一起进行描述,而类的实例化就是具有相同行为和属性的对象。类就好像是用来制造零件的模具,而对象就好像是生产出来的零件。

定义一个类时(不含有静态成员或者变量),一般不会在内存中给其分配一个存储结构。而只有定义对象时,才会在内存中分配存储结构。当利用同一个类定义不同的对象时,系统会在内存中为不同的对象创建不同的存储结构。也就是说,会对应不同的内存地址。虽然同一个类中定义出来的对象,其内容可能相同(成员变量、成员方法等等都相同),但是其内存中的地址仍然是不同的。

如果要创建几个内容相同的对象,有两种方法:一是通过成员变量赋值来完成。根据同一个类创建对象,分别赋予相同的初始化值,那么这两个对象的内容就是相同的。二是通过地址赋值来完成。即将第一个对象在内存中的地址赋值给第二个对象。此时两个对象名字虽然不同,但是他们却指向内存中的同一块区域。此时就好像一个人有两个名字,其实是同一个人。

例如:
String str1=new String(“hello”);
String str2=new String(“hello”);
String str3=str1; //创建一个对象,并利用对象str1的地址赋值

如果只比较对象的内容是否相同,只需要使用equal函数即可。如果比较它们是否是同一个对象,即在内存中是否指向同一个存储区域,则需要使用==运算符。

慎用str3=str1内存地址的赋值形式。利用这种形式来创建对象,没有创建一个新的对象。而只是将两个对象同时指向内存中的同一个存储区域。由于它们实际上是同一个对象,因此通过其中一个对象修改了对象的内容,那么另外一个对象名字调用的对象其也会受到影响,它们相互之间缺乏独立性。这在开发应用程序的时候容易导致对象内容被无意中修改,从而导致应用程序结果出错。

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注