前言

在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一。我们每天创建很多对象,那你知道Java中创建对象的方式有几种吗?

本文将介绍Java创建对象的4种方法:

  1. new关键字
  2. 反射
  3. Clone方法
  4. 反序列化

1.使用new关键字创建对象

这也是我们最常用最简单的创建对象方式了,我们可以调用任意参数的构造器。

2.反射

通过反射创建对象的方式又有两种,一是通过Class.newInstance,二是通过调用构造器再去创建对象Constructor.newInstance。

  • Class.newInstance

  • Constructor.newInstance

先通过反射获取类中无参构造器,然后通过newInstance()获取对象:

3.Clone

通过Clone创建对象,首先要在实体类中必须先实现Cloneable接口并复写Object的clone方法(因为Object的这个方法是protected的,你若不复写,外部也调用不了呀)。

4.反序列化

序列化:指把 Java 对象转换为字节序列的过程;

反序列化:指把字节序列恢复为 Java 对象的过程;

因此我们可以通过反序列化创建对象,具体代码如下:

总结

以上便是Java创建对象的五种方式,也是面试经常会问到的问题,通过本篇文章,你将会了解掌握创建对象的五种方式。

五种方式是否调用了构造器总结:

创建对象方式

是否调用了构造器

new关键字

Class.newInstance

Constructor.newInstance

Clone

反序列化

因此,Java创建对象不一定会调用构造器,此知识点得牢记!!!

Java对象创建的方式(简洁明了)相关推荐

  1. 【JVM】Java对象创建的流程步骤

    · 本文摘要 · 罗列Java创建对象的各种方式: · 讲解Java对象创建的流程步骤: 一.Java创建对象的各种方式 · 1. 用关键字new,老少皆知的方法:StringBuffer sb = ...

  2. Java 并发编程解析 | 如何正确理解Java对象创建过程,我们主要需要注意些什么问题?

    苍穹之边,浩瀚之挚,眰恦之美: 悟心悟性,善始善终,惟善惟道! -- 朝槿<朝槿兮年说> 写在开头 从接触 Java 开发到现在,大家对 Java 最直观的印象是什么呢?是它宣传的 &qu ...

  3. java对象实例化的方式

    java对象实例化的方式有以下几种: 1.使用new 2.工厂模式 3.反射 4.clone()方法 5.反序列化方式 /** 实现Cloneable和Serializable接口 */ public ...

  4. java 对象创建过程_5种创建Java对象的方式

    在本篇文章中,将介绍5种创建Java对象的方式.类是创建对象的基本模板,接下来将介绍5种不同的方式,利用Java类来实例化Java对象. 1. 使用new关键字 ​ 采用new关键字实例化对象是Jav ...

  5. java创建子类对象的步骤_一通Spring骚操作:我敢说没人比我更懂Java对象创建

    一.开篇一问 一个Spring Bean是Java对象吗?那么一个对象是Spring Bean吗? 带着这个问题我们一起来回顾Spring的生命周期流程,彻底了解一个类在Spring中究竟做了哪些操作 ...

  6. Java对象创建的过程及对象的内存布局与访问定位

    这里以HotSpot为例,且所说的对象指普通的Java对象,不包括数组和Class对象等. 1.对象创建的过程 1.类加载.解析.初始化:虚拟机遇到new时先检查此指令的参数是否能在常量池中找到类的符 ...

  7. java对象创建的细节

    Java是一门面向对象的编程语言,在Java程序运行过程中无时无刻都有对象被创建出来.在语言层面上,创建对象(例如克隆.反序列化)通常仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象限于 ...

  8. java对象创建的流程到底是什么样子的?new一个对象是真的直接放在堆里吗?其实大有学问!

    目录 对象创建流程图 总结 逃逸分析 什么是逃逸分析? 对象逃逸状态 逃逸分析优化 TLAB区 对象如何进入老年代 有问题可以直接留言讨论~ 对象创建流程图 1.编译器通过逃逸分析,确定对象是在栈上分 ...

  9. Java:对象创建和初始化过程

    1.Java中的数据类型     Java中有3个数据类型:基本数据类型(在Java中,boolean.byte.short.int.long.char.float.double这八种是基本数据类型) ...

最新文章

  1. python3(八)sys模块
  2. win10系统调用架构分析
  3. 如何在Outlook中的电子邮件上显示快速操作按钮
  4. 对计算机的分析,对计算机思维的逻辑分析(范文).doc
  5. 在另一台服务器上还原被误删的 MySQL 数据
  6. 打王者、调小酒、搭乐高,大厂女程序员的别样人生!
  7. MapReduce入门(二)合并小文件
  8. 1.6. 6.x Mini 安装后需要做的一些事
  9. 锐起无盘服务器蓝屏死机,正确配置减少锐起无盘系统死机蓝屏
  10. tplink无线网卡的linux,ubuntu上tp-link无线网卡驱动安装
  11. Python爬取奇书网(用Python下载小说到本地)
  12. 【AWS系列】第四讲:什么是 AWS Serverless
  13. mysql内存会持续上涨,每天增加一点,一直到100%
  14. 后疫情时代 亿联网络的攻与守
  15. 性能测试——CPU占用率的计算原理
  16. 003_JS实现图片轮播与点击播放
  17. python输入输入:input、map
  18. c 语言url 编码转换,在线编码转换URL编码URL解码
  19. php html5手机端多张图片上传,php+html5兼容手机端的图片选取裁剪上传实例
  20. 创客学院9天C语言五

热门文章

  1. 简易的Android绘图程序
  2. ERP : 粉末冶金行业介绍
  3. 家用环境下Cisco vWLC配置
  4. IDEA中mybatis-generator插件的使用
  5. 将.csv文件用Excel 2016打开
  6. 每日学术速递3.14
  7. 弘辽科技:淘宝免费流量扶持怎么用?新店流量扶持规则是啥?
  8. 牛客练习赛 4 A-Laptop (线段树,思维/GTMD普通前缀和也能求)
  9. 呆瓜呆呆的专栏stream学习链接
  10. 通过C语言打开路径(计算器)