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值被定义为静态成员变量的效果,即使使用两个对象调用同一个静态成员变量进行操作,依然可以改变静态成员变量的值。
阅读全文
0 0
- Java对象
- Java对象
- java对象
- JAVA-对象
- java对象
- Java 对象
- Java对象
- java对象
- Java 对象
- java对象
- java对象
- java对象
- java对象
- Java 对象
- Java对象
- java对象
- Java对象
- java----Java面向对象
- OpenCV: “vector”: 未声明的标识符
- 基于UDP Socket例子
- 在win7中运行hadoop码出现ClassCastException: class com.sun.jersey.core.impl.provider.entity.XMLJAXBElementPr
- Unity 抛物线,直线,Sine曲线等
- SpringBoot的actuator(执行器)常用的访问地址
- Java 对象
- BZOJ 1566: [NOI2009]管道取珠 另类DP
- python常用模块之os模块
- POJ 1899 Farmer Bill's Problem 笔记
- Qt中信号存在重载情况下的选择
- 数据库常见面试题
- Linux的SOCKET编程详解——非常叼
- 决策树算法学习笔记(二)
- 我的学习之路_第十六章_xml