java实例化对象的4种方式

  1. 用new 语句创建对象,这是最常用的创建对象方法。
package test;public class Father {public void print() {System.out.println("我是father");}
public static void main(String[] args) {Father f = new Father();f.print();}
}
  1. 运用反射手段,调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
package test;public class Father {public void print() {System.out.println("我是father");}
public static void main(String[] args) {try {Class<?> cla = Class.forName("test.Father");try {Father f = (Father)cla.newInstance();f.print();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}} catch (ClassNotFoundException e) {e.printStackTrace();}}
}


3. 调用对象的clone()方法
clone()表示克隆,使用这个实例化一个对象的前提是前面已经有一个实例化过的对象

User user1 = new User(1,"dan");User user2 = null;user2 = (User) user1.clone();
  1. 运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。
    序列化:将对象状态转化为可保持或传输的格式的过程,被序列化的对象必须implments Serializable
    反序列化:将流转化成对象的过程
    当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,即java对象序列,才能在网络上传送,即序列化过程;接收方则需要把字节序列再恢复为java对象,即反序列化。
package test;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;public class Father  {//序列化public static void serial(String fileName) {Test t = new Test("wo");try {ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(fileName));objectOutputStream.writeObject(t);objectOutputStream.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//反序列化public static void deserialize(String fileName){   try {ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(fileName));Test t2 = (Test)inputStream.readObject();inputStream.close();t2.test();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}catch (ClassNotFoundException e) {e.printStackTrace();}}
public static void main(String[] args) {Father.serial("D:\\test.txt");System.out.println("序列化完成");Father.deserialize("D:\\test.txt");System.out.println("反序列化完成");}
}
class Test implements Serializable{public String name;public Test(String name) {this.name = name;}public void test() {System.out.println(name);}
}


(1)和(2)都会明确的显式的调用构造函数 ;(3)是在内存上对已有对象的影印,所以不会调用构造函数 ;(4)是从文件中还原类的对象,也不会调用构造函数。

java实例化对象的四种方式相关推荐

  1. 用spring管理和实例化对象的四种方式

    用spring管理和实例化对象的四种方式 方式一:无参构造函数(最常用) 对象是spring创建,创建的对象还要交给spring容器管理 bean:豆子 id:在spring容器中Hello对象的名, ...

  2. Java中创建对象的四种方式

    为什么80%的码农都做不了架构师?>>>    Java中创建对象的四种方式 (1) 用new语句创建对象,这是最常见的创建对象的方法.    (2) 运用反射手段,调用java.l ...

  3. Java 创建类的四种方式

    Java 创建类的四种方式 对于上学期已经学习过c++的同学,是不是对另一大编程语言产生了浓厚的兴趣,对于c++的面向对象编程,又和java的面向变量有何区别,下面我们从java四种创建对象来说起. ...

  4. java怎样输入五个数字打一成语,Java的线程安全四种方式五个等级[1]

    Java的线程安全四种方式五个等级[1]以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 四种方式 sychronized ...

  5. Java 实现多线程的四种方式 超详细

    Java 实现多线程的四种方式 文章目录 Java 实现多线程的四种方式 一.继承 Thread 类 二.实现 Runnable 接口 三.实现 Callable 接口 四.线程池 1,Executo ...

  6. java创建多线程的四种方式

    java多线程的创建方式是面试经常会被问到的一个问题,因此在这里我对java创建多线程的四种方式做一个简单的归纳与总结,便于复习. 一.继承Thread类创建多线程 ① 创建一个继承于Thread类的 ...

  7. 详解C#实例化对象的三种方式及性能对比

    前言 做项目过程中有个需求要实例化两万个对象并添加到List 中,这个过程大概需要1min才能加载完(传参较多),于是开启了代码优化之旅,再此记录. 首先想到的是可能实例化比较耗时,于是开始对每种实例 ...

  8. Java遍历Map对象的四种方式

    关于java中遍历map具体哪四种方式,请看下文详解吧. 方式一 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. 1 2 3 4 Map<Integer, Intege ...

  9. java遍历多层map_Java遍历Map对象的四种方式

    文章转自: https://www.cnblogs.com/fqfanqi/p/6187085.html 关于java中遍历map具体哪四种方式,请看下文详解吧. 方式一 这是最常见的并且在大多数情况 ...

  10. java中创建对象的方式有哪些,Java中创建对象的四种方式

    四种方式: http://wenku.baidu.com/link?url=mv6VbMd3d-aCkbGMhn6rbLwFbef7v60nRbyA-thP6Y7hqtjiv0K0_kdtfOWaUj ...

最新文章

  1. 7-2 然后是几点 (Java)
  2. 数据中心行业人士如何进行继续教育
  3. java图片16帧动画_Java实现帧动画的实例代码
  4. 串口通信的基本原理----STM32
  5. 一步步编写操作系统 55 CPL和DPL入门2
  6. CSDN Markdown编辑设置图片大小
  7. python画柱状图-Python:Matplotlib 画曲线和柱状图(Code)
  8. python没有pygame_pygame安装教程全程详解
  9. 基于springboot的薪资管理系统设计
  10. 阿里巴巴Java开发手册(泰山版)【篇一】编程规约 附2: 专有名词解释 附3: 错误码列表
  11. 09.大数据技术之Spark
  12. 千个Excel文件合并为一个文件
  13. win10企业版跟win10专业版有什么区别,win10系统版本区别
  14. 效率提升98%!高海拔光伏电站运维巡检背后的AI利器
  15. Linux上svnserve “db/txn-current-lock: Permission denied“ 问题解决办法
  16. 人工智能面试总结-基础理论
  17. Fast Abstractive Summarization with Reinforce-Selected Sentence Rewriting
  18. 计算机java毕业设计 ssm学生周报管理系统(源码+论文)
  19. 阿里巴巴的程序员等级
  20. QQ旋风踏上“迷你快车”山寨路

热门文章

  1. java环境安装菜鸟教程,Java基础教程---JDK的安装和环境变量的配置
  2. python2.7安装
  3. [渝粤教育] 四川师范大学 信息素养:效率提升与终身学习的新引擎 参考 资料
  4. 产品体系建模工具软件
  5. 十种UI设计常用字体特效,让你的设计高大上!【萧蕊冰】
  6. python网易云歌词爬虫_用python爬取网易云音乐歌曲的歌词
  7. day09 CDN绕过漏洞回链接口探针全网扫描反向邮件
  8. 基于大数据的精准教学模式探究
  9. Python 实例教程
  10. python约瑟夫环单向循环链表_约瑟夫环_约瑟夫环单向循环链表_约瑟夫环c语言循环链式...