Java 对象

来源:互联网 发布:即时通信软件排行 编辑:程序博客网 时间:2024/05/18 23:53

对象是由类抽象出来的。在java语言中通过new操作符来创建对象。

语法:

Test test = new Test()

Test test = new Test("a")

test 对象被创建出来时,就是对象的一个引用,这个引用在内存中为对象分配了存储空间,也可以在构造方法中初始化成员变量,当创建对象时,自动调用构造方法。

每个对象都是相互独立的,在内存中占据独立的内存地址,并且每个对象都具有自己的生命周期,当一个对象的生命周期结束时,对象就变成垃圾,由java虚拟机自动回收机制处理,不能再被使用。

public class CreateObject{         public CreateObject(){ //构造方法               System.out.println("创建对象")         }         public static void main(String args[]){//主方法         new CreateObject();//创建对象   }}

上述实例的主方法中使用new操作符创建爱你对象,创建对象的同时,将自动调用构造方法。

访问对象的属性和行为

用户使用后new操作符创建一个对象后,可以使用“对象.类成员”来访问对象的属性和行为,对象和行为在类中是通过类成员变量和成员方法的形式来表示,所以当对象获取类成员时,也相应地获取了对象的属性和行为。

package javademo;public class TransferProperty {int i = 47;public void call(){System.out.println("调用call()方法");for(i = 0; i < 3; i++){System.out.print(i+"");if(i==2){System.out.println("\n");}}}public TransferProperty(){ //定义构造方法}public static void main(String[] args) {// TODO Auto-generated method stubTransferProperty t1 = new TransferProperty();//创建一个对象TransferProperty t2 = new TransferProperty();//创建另一个对象t2.i = 60;//将类成员变量赋值60System.out.println("第一个实例对象调用变量i的结果:"+ t1.i);t1.call();//使用第一个对象调用类成员方法System.out.println("第二个实例对象调用变量i的结果:"+t2.i);t2.call();//使用第二个对象调用类成员方法}}
在上述代码的主方法中首先实例化一个对象,然后使用“.”操作符调用类的成员变量和成员方法。但是在运行结果中可以看到,虽然使用两个对象调用同一个成员变量,结果却不相同,因为在打印这个变量的值之前将该值重新赋值为60,但在赋值时使用的是第二个对象t2调用成员变量,所以在第一对象t1调用成员变量打印该值时仍然是成员变量的初始值。由此可见,两个对象的产生是相互对立的,改变了t2的i值,不会影响到t1的i值。

如果希望成员变量不被其中任何一个对象改变,可以使用static关键字。

package javademo;public class AccessProperty {static int i = 47;//定义静态成员变量public void call(){//定义成员方法System.out.println("调用call()方法");for(i = 0; i < 3; i++){System.out.print(i+" ");if(i == 2){System.out.println("\n");}}}public AccessProperty(){//定义构造方法}public static void main(String[] args) {//主方法// TODO Auto-generated method stubAccessProperty t1 = new AccessProperty();//创建一个对象AccessProperty t2 = new AccessProperty();//创建另一个对象t2.i = 60;//将类成员变量赋值60System.out.println("第一个实例对象调用变量i的结果:"+ t1.i);t1.call();//使用第一个对象调用类成员方法System.out.println("第二个实例对象调用变量i的结果:"+ t2.i);t2.call();//使用第二个对象调用类的成员方法}}
从运行结果可以看出,由于使用t2.i=60语句改变了静态成员变量的值,使用对象t1调用成员变量得值也是60,这正是i值被定义为静态成员变量的效果,即使使用两个对象调用同一个静态成员变量进行操作,依然可以改变静态成员变量的值。


原创粉丝点击