微软官方MSDN原版Win10系统下载

现在位置: 首页  > 系统教程  > 系统帮助

java类如何创建对象

时间:2024-09-21 02:55:10   

大家好,今天Win10系统之家小编给大家分享「java类如何创建对象」的知识,如果能碰巧解决你现在面临的问题,记得收藏本站或分享给你的好友们哟~,现在开始吧!

java学习手册app系列软件最新版本下载

1.Java创建对象的几种方法


  使用new关键字:这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的够赞函数(无参的和有参的)。比如:Student student = new Student();
使用Class类的newInstance方法:我们也可以使用Class类的newInstance方法创建对象,这个newInstance方法调用无参的构造器创建对象,如:Student student2 = (Student)Class.forName("根路径.Student").newInstance(); 或者:Student stu = Student.class.newInstance();
使用Constructor类的newInstance方法:本方法和Class类的newInstance方法很像,java.lang.relect.Constructor类里也有一个newInstance方法可以创建对象。我们可以通过这个newInstance方法调用有参数的和私有的构造函数。如: Constructor<Student> constructor = Student.class.getInstance(); Student stu = constructor.newInstance(); 这两种newInstance的方法就是大家所说的反射,事实上Class的newInstance方法内部调用Constructor的newInstance方法。这也是众多框架Spring、Hibernate、Struts等使用后者的原因。
使用Clone的方法:无论何时我们调用一个对象的clone方法,JVM就会创建一个新的对象,将前面的对象的内容全部拷贝进去,用clone方法创建对象并不会调用任何构造函数。要使用clone方法,我们必须先实现Cloneable接口并实现其定义的clone方法。如:Student stu2 = <Student>stu.clone();这也是原型模式的应用。
使用反序列化:当我们序列化和反序列化一个对象,JVM会给我们创建一个单独的对象,在反序列化时,JVM创建对象并不会调用任何构造函数。为了反序列化一个对象,我们需要让我们的类实现Serializable接口。如:ObjectInputStream in = new ObjectInputStream (new FileInputStream("data.obj")); Student stu3 = (Student)in.readObject();

2.java在类的定义中创建自己的对象?


  你主要的疑惑是,为什么类中的方法可以创建它本身。
  
  类和方法的写法都是一种  声明, 所谓声明,就是说是对行为的描述,而不是要真正执行它。
  例如
  class 小狗{
  public void 吃饭(){
  小狗 abc = new 小狗();
  
  }
}
  
这里声明 一个叫小狗 的 类, 他有一个方法,吃饭()。
到这里没有任何问题, 我只是描述了一个类,和吃饭的行为。
这个时候系统什么都没发生, 因为只是声明而已。
说的是小狗  “可以” 吃饭, 但并不是声明完就必须立即调用 吃饭()。
但这样的话,谁去调用他呢, 我可以写另一类 比如person类,但是谁去调用person呢?
说来说去就必须有一个不需要创建对象也能调用的方法。
java里面就是main方法(这个main方法只需要放到任意一个类中即可)。
  public static void main(String[] args) {
  小狗 a = new 小狗();
  a.吃饭();
}
  当你用java执行这个类时,系统会寻找main方法作为入口执行。流程如下
  1  进入 main方法,调用 小狗   a=  new 小狗(), 
这样系统才真正创建一个小狗 类(class)的 一个实例(instance),
2  然后调用 a.吃饭(),  这个时候系统执行了吃饭的方法, 即又创建了abc, 一个新的小狗,
3 程序结束, 返回。
  
系统寻找main的时候不关心main是否在哪个类里,所以实际上main和他的宿主在生命周期上没有关联。之所以写在这个类里只是不需要import类,图方便而已。
上面2中,创建a小狗, 吃饭()调用后,创建了abc小狗, 两者并没有什么关系

3.JAVA创建对象有哪几种方式 ???


  (h2)JAVA创建对象的四种方式:
  有4种显式地创建对象的方式:
  1.用new语句创建对象,这是最常用的创建对象的方式。
  2.运用反射手段,调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
  3.调用对象的clone()方法。
  4.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法.
  下面演示了用前面3种方式创建对象的过程。
  
  以上程序的打印结果如下:
  call second constructor
  call default constructor
  c1: name=unknown,age=0
  call second constructor
  c2: name=Tom,age=20
  c2==c3 : false
  c2.equals(c3) : true
  c3: name=Tom,age=20
  从以上打印结果看出,用new语句或Class对象的newInstance()方法创建Customer对象时,都会执行Customer类的构造方法,而用对象的clone()方法创建Customer对象时,不会执行Customer类的构造方法。(区别)
  除了以上4种显式地创建对象的方式以外,在程序中还可以隐含地创建对象,包括以下几种情况:
  1.对于java命令中的每个命令行参数,Java虚拟机都会创建相应的String对象,并把它们组织到一个String数组中,再把该数组作为参数传给程序入口main(String args[])方法。
  2.程序代码中的String类型的直接数对应一个String对象,例如:
  
  执行完以上程序,内存中实际上只有两个String对象,一个是直接数,由Java虚拟机隐含地创建,还有一个通过new语句显式地创建。
  3.字符串操作符“+”的运算结果为一个新的String对象。例如:
  
  4.当Java虚拟机加载一个类时,会隐含地创建描述这个类的Class实例.

以上就是关于「java类如何创建对象」的全部内容,本文讲解到这里啦,希望对大家有所帮助。如果你还想了解更多这方面的信息,记得收藏关注本站~

*本文来②源Win10系统之家,转载请联系本站网管!

相关文章

  • 怎么创建宽带连接

    怎么创建宽带连接

    1.怎么创建宽带连接XP系统的设置方法1、首先在桌面上用鼠标右键点击网上邻居,选择“属性”,出来网络连接的文件夹,现在左边任务栏的“创建一个新的连接”。2、点击创建一个新的连接,出来欢迎使用新建连接向导,点击下一步。3、...
  • 如何创建宽带连接

    如何创建宽带连接

    1.宽带连接快捷方式怎么创建1、首先打开开始菜单,在开始菜单中打开控制面板,在控制面板中找到网络和internet这个选项,然后单击这个选项,进入网络设置页面。2、在网络和共享中心下面的小链接中,有一个查看网络状态和任...
  • yy怎么创建频道

    yy怎么创建频道

    1.YY怎么创建频道?花一定的费用购买。你买那个真不如买个Ts价格便宜还方便管理Teamspeaker2很多网站都能下载到,需要花钱买一个频道,不是很贵,用法也很简单,看看软件自带的介绍就可以了。TS里有管理权的帐号才能开通一...
  • 怎么创建百度百科

    怎么创建百度百科

    1.如何创建百度百科百度百科没听说可以创建,我只听说词条能创建.在输入框内输入词条名称每个页面的顶端都可以看到“进入词条”的输入框,在输入框中输入您要查看的词条名称。例如输入“糖醋排骨”,并点击“进入词条”。-----...