Java创建对象详解:Java创建对象的⼏种⽅法
对象是对类的实例化。对象具有状态和⾏为,变量⽤来表明对象的状态,⽅法表明对象所具有的⾏为。Java 对象的⽣命周期包括创建、使⽤和清除,本⽂详细介绍对象的创建,在 Java 语⾔中创建对象分显式创建与隐含创建两种情况。
显式创建对象
对象的显式创建⽅式有 4 种。
1. 使⽤ new 关键字创建对象
这是常⽤的创建对象的⽅法,语法格式如下:
类名 对象名=new 类名();
2. 调⽤ java.lang.Class 或者 flect.Constuctor 类的 newlnstance() 实例⽅法
在 Java 中,可以使⽤ java.lang.Class 或者 flect.Constuctor 类的 newlnstance() 实例⽅法来创建对象,代码格式如下:java.lang.Class Class 类对象名称=java.lang.Class.forName(要实例化的类全称);
类名 对象名=(类名)Class类对象名称.newInstance();
调⽤ java.lang.Class 类中的 forName() ⽅法时,需要将要实例化的类的全称(⽐如 l.package.Student)作为参数传递过去,然后再调⽤ java.lang.Class 类对象的 newInstance() ⽅法创建对象。
3. 调⽤对象的 clone() ⽅法
该⽅法不常⽤,使⽤该⽅法创建对象时,要实例化的类必须继承 java.lang.Cloneable 接⼝。 调⽤对象的 clone() ⽅法创建对象的语法格式如下:
类名对象名=(类名)已创建好的类对象名.clone();
4. 调⽤ java.io.ObjectlnputStream 对象的 readObject() ⽅法
下⾯创建⼀个⽰例演⽰常⽤的前三种对象创建⽅法。⽰例代码如下:
实例化类和实例化对象public class Student implements Cloneable
{
/
/实现 Cloneable 接⼝
private String Name; //学⽣名字
private int age; //学⽣年龄
public Student(String name,int age)
{ //构造⽅法
this.Name=name;
this.age=age;
}
public Student()
{
this.Name="name";
this.age=0;
}
public String toString()
{
return"学⽣名字:"+Name+",年龄:"+age;
}
public static void main(String[] args)throws Exception
{
System.out.println("---------使⽤ new 关键字创建对象---------");
//使⽤new关键字创建对象
Student student1=new Student("⼩刘",22);
System.out.println(student1);
System.out.println("-----------调⽤ java.lang.Class 的 newInstance() ⽅法创建对象-----------");
//调⽤ java.lang.Class 的 newInstance() ⽅法创建对象
Class cl=Class.forName("Student");
Student student2=(wInstance();
System.out.println(student2);
System.out.println("-------------------调⽤对象的 clone() ⽅法创建对象----------");
//调⽤对象的 clone() ⽅法创建对象
Student student3=(Student)student2.clone();
System.out.println(student3);
}
}
对上述⽰例的说明如下:
使⽤ new 关键字或 Class 对象的 newInstance() ⽅法创建对象时,都会调⽤类的掏造⽅法。
使⽤ Class 类的 newInstance() ⽅法创建对象时,会调⽤类的默认构造⽅法,即⽆参构造⽅法。
使⽤ Object 类的 clone() ⽅法创建对象时,不会调⽤类的构造⽅法,它会创建⼀个复制的对象,这个对象和原来的对象具有不同的内存地址,但它们的属性值相同。
如果类没有实现 Cloneable 接⼝,则 clone。⽅法会抛出 java.lang.CloneNotSupportedException 异常,所以应该让类实现 Cloneable 接⼝。
程序执⾏结果如下:
---------使⽤ new 关键字创建对象---------
学⽣名字:⼩刘,年龄:22
-----------调⽤ java.lang.Class 的 newInstance() ⽅法创建对象-----------
学⽣名字:name,年龄:0
-------------------调⽤对象的done()⽅法创建对象----------
学⽣名字:name,年龄:0
隐含创建对象
除了显式创建对象以外,在 Java 程序中还可以隐含地创建对象,例如下⾯⼏种情况。
①String strName=“strValue”,其中的“strValue”就是⼀个 String 对象,由 Java 虚拟机隐含地创建。
②字符串的“+”运算符运算的结果为⼀个新的 String 对象,⽰例如下:
String str1=“Hello”;
String str2=“Java”;
String str3=str1+str2; //str3引⽤⼀个新的String对象
③当 Java 虚拟机加载⼀个类时,会隐含地创建描述这个类的 Class 实例。
**提⽰:**类的加载是指把类的 .class ⽂件中的⼆进制数据读⼊内存中,把它存放在运⾏时数据区的⽅法区内,然后在堆区创建⼀个java.lang.Class 对象,⽤来封装类在⽅法区内的数据结构。
⽆论⾤⽤哪种⽅式创建对象,Java 虚拟机在创建⼀个对象时都包含以下步骤:
1. 给对象分配内存。
2. 将对象的实例变量⾃动初始化为其变量类型的默认值。
3. 初始化对象,给实例变量赋予正确的初始值。
注意: 每个对象都是相互独⽴的,在内存中占有独⽴的内存地址,并且每个对象都具有⾃⼰的⽣命周期,当⼀个对象的⽣命周期结束时,对象就变成了垃圾,由 Java 虚拟机⾃带的垃圾回收机制处理。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论