用Java创建对象的5种不同方法

作为Java开发人员,我们通常每天创建许多对象,但是我们始终使用依赖管理系统(例如Spring)来创建这些对象。但是,还有更多创建对象的方法,将在本文中进行研究。

Java有五种创建对象的方法,下面将通过示例说明这些方法,然后介绍创建对象的行的字节码。

执行最后给出的程序,将会看到方法1、2、3使用构造函数创建对象,而4、5没有调用构造函数创建对象。

1.使用新关键字

这就是日常的方法

2.使用Class类的newInstance()方法

以使用Class类的newInstance()方法创建一个对象。此newInstance()方法调用no-arg构造函数来创建对象。

可以通过newInstance()通过以下方式创建对象:

或者

3.使用构造方法类的newInstance()方法

与Class类的newInstance()方法类似,java.lang.reflect.Constructor类中有一个newInstance()方法可用于创建对象。我们还可以使用此newInstance()方法来调用参数化构造函数和私有构造函数。

这两种newInstance()方法都被称为创建对象的反射方式。实际上,Class类的newInstance()方法在内部使用了Constructor类的newInstance()方法。这就是为什么最好使用后一种方法,并在Spring,Hibernate,Struts等不同框架中使用后一种方法的原因。

4.使用clone()方法:

每当我们在任何对象上调用clone()时,JVM实际上都会为我们创建一个新对象,并将先前对象的所有内容复制到其中。使用clone方法创建对象不会调用任何构造函数。

要在对象上使用clone()方法,我们需要实现Cloneable并在其中定义clone()方法。

这种方式肯定也有其缺点的,但是在对象完全满足Java克隆的强制条件之前,它仍然是创建任何对象的副本的最流行和最简单的方法。

5.使用反序列化:

每当我们序列化和反序列化一个对象时,JVM都会为我们创建一个单独的对象。在反序列化中,JVM不使用任何构造函数来创建对象。

为了反序列化一个对象,我们需要在我们的类中实现一个Serializable接口。

正如我们在上面的字节码片段中看到的,invokevirtual 除了第一个方法被转换为两个调用之外,所有四个方法都被调用并转换为 (这些方法直接处理对象的创建):一个是新的,另一个是invokespecial (调用构造函数)。

考虑一个Employee类,将为其创建对象:

在下面的Java程序中,将用所有5种方式创建Employee对象。

该程序将给出以下输出:

喜欢希望您关注下呗。

教你十个步骤成为优秀Java开发人员

一、对OO原则有很强的基础和理解

对于Java开发人员来说,必须对面向对象编程有很强的理解。没有在OOPS上有很强的基础,就不能实现像Java这样的面向对象编程语言的美。如果你不知道什么是OOPS,即使使用的是OOP语言,可能仍然在以过程的方式进行编码。仅仅研究面向对象的原则定义并没有多大帮助。我们应该知道如何应用这些原则以面向对象的方式设计解决方案。因此,应该对对象建模、继承、多态性、设计模式等有很强的了解。

二、掌握核心api

如果你不知道语言结构和核心api,那么在理论知识方面你有多强并不重要。对于Java,人们应该对Java.lang.*、I/O、异常、集合、泛型、线程、JDBC等核心API有很强的实践经验。在构建web应用程序时,无论你使用的是哪种框架,理解有关Servlet和JSP的概念也很重要——这是必须的。

三、继续编码

从理论上讲,事情看起来更简单。我们能很容易地解决一个问题。但是,当我们开始实施方法时,我们可以意识到问题的深度。在编写代码时,你将了解语言的局限性或设计最佳实践。所以请继续编码,并在编码时,多想想是什么、为什么、怎么做、有什么用等问题。

四、订阅论坛

我们并不孤单。有很多人在研究和我们同样的技术。虽然在框架上做一个简单的概念验证可能不会给你带来真正的挑战,但是当你开始在实际项目中使用它时,你将面临奇怪的问题,并且在他们的官方文档中找不到任何解决方案。开始研究新技术时,最好的也是第一件事就是订阅相关的技术论坛。不管你面临的问题是什么,世界上的其他人可能已经面对了,并找到了解决办法。如果你能回答其他论坛用户提出的问题,那就太好了。

五、关注博客并回复

正如我已经说过的,你并不孤单。全世界有成千上万的狂热的技术狂在博客上发表他们对技术的见解。你还可以从其他博客和开发人员那里获得对同一技术的有价值的观点。有些人可能会发现特定的框架特性非常有用,而另一些人可能会发现这些特性愚蠢而毫无意义,给出他自己为什么会这样的理由。因此,你可以从使用这些工具的其他开发人员那里看到好处和坏处。

从其他博客中获取价值的另一种方法是用你的观点和问题来回复/评论文章。

六、阅读开源框架的源代码

一个好的开发人员将学习如何使用框架。但是如果你想成为一个优秀的开发人员,你应该研究各种成功的、流行的框架的源代码,在这里你可以看到框架的内部工作机制以及最佳实践。当以更有效的方式使用框架时,它将对使用有很大帮助。

七、了解新兴技术趋势

从开源软件的发展趋势来看,它们正以惊人的速度增长。当你对如何使用一个特定的框架有了一个好的想法时,它就有被淘汰的危险了,因为一些新的框架出现在图片中,具有一组超级特性。然后,你试图用当前框架解决的问题可能已经由具有单行配置的新框架更容易解决了。所以,要注意照片里的内容,还有外面的内容。

八、将常用的代码片段/实用程序整理分类

随着时间的推移,你可能需要一次又一次地编写/复制粘贴同一段代码/配置。保留log4.properties、JDBC configuration等配置片段和StringUtils、ReflectionUtils、DBUtils等实用程序将更有帮助。我知道它本身不会让你成为一个优秀的开发人员。但想象一下,某个联合开发人员要求你帮助从对象集合中获取属性的值列表,然后你只需使用ReflectionUtil并在几分钟内给出解决方案:这将使你表现出色。

九、了解不同的开发方法

熟悉各种方法,如敏捷、SCRUM、XP、瀑布等等。现在,选择开发方法取决于客户。有些客户更喜欢敏捷,有些客户对瀑布模型很满意。S,o对各种方法有一个想法将是一个真正的好处。

十、记录/博客你对技术的想法

在日常工作中,你可能会学到新的更好的做事方法,以及最佳实践、架构理念等。不断记录这些想法,为它们写博客,或者在各大社区进行分享,和别人进行碰撞,另外,对于日常工作的做笔记,也能让你工作效率快一半以上,好记性也比不过烂笔头。

转行学习Java,跟着我的步骤学,保准你拿下10k以上的工作

上周一刚入职不久,是在上海的一家软件公司,税前11K,五险一金,996的工作制,已经上班了一个月,说下自己的感受。

因为我专科毕业4年,之前一直在做电商运营,大专学的专业是电子商务,所以我包装了两年的工作经验,目前平时的工作就是增删改查,内容比较单一简单。公司的工作技术氛围一般,业务线也比较单一,感觉在这家公司没有太大的发展,但是想在这家公司积累工作经验,等到明年初跳槽,到时候包装三年工作经验,去一家有发展前途的公司,应该可以拿到18K左右的薪资。

我是怎么自学成功的?跟大多数人一样,我也是边工作边学习,裸辞学习根本办不到,经济能力不允许。自认为我学习Java的决心要更大一些,因为我所从事的电商运营已经很难再有大的发展,业绩压力非常大,收入也几乎都是那个样子,没有任何提升,所以我转行学技术是必然的事情。所以既然打算了转行学习Java,我就开始做好了吃学习苦的准备,因为边工作边学习确实非常辛苦,但只要想要回报,就一定要付出,这个道理每个人都明白。

每天下班回家后自学四五个小时,基本都要到凌晨1点以后,为了能改变自己目前的状态。曾经在学校的时候不明白生活的艰难,遭受到了社会的毒打才渐渐明白,在这个时代如果没有家庭背景,没有好的学历,没有好的技术和体面的工作,就只能做社会的底层。在上海这样的城市更加显得格外的冷漠,所以我必须要学会一门可以通过努力而获得的高薪技术,那就是把Java学到精通在精通的地步。我的学习时间持续了7个月,把Java基础到框架的主要内容都掌握得差不多了,才开始尝试投简历找工作。光找工作就找了1个多月的时间,顶着巨大的压力,半路转行确实不容易啊。

我认为自己之所以能自学Java成功就业,最重要的一点是“有人跟我一起监督学习”我做Java开发的表哥把我拉进了他建立的Java交流群,这个Java交流群他维护了5年的时间,里面都是各种Java技术大佬解答问题,以及刚想转行学习Java的人,每天的学习氛围非常浓厚,或许大多群的人都在水群,但是这个群真的是独一无二,每天几乎全部在讨论Java问题,以及全国各地相互内推工作的信息,可以看下每天交流的Java技术问题。

就是因为有这么好的学习氛围,每天大家一起监督,遇到自己不懂又百度不到的问题,有大佬第一时间帮我解答,所以我才能用7个月的时间自学就业,要不然我真的觉得我会跟大部分人一样中途放弃。所以我强烈建议大家也加一下这个Java交流群,能不能坚持学下去,能不能学好,有人一起学,有人指导真的太重要了。全靠自己摸索自学Java到就业的水平可能性真的太低了,所以就会有那么多人放弃。

我学习Java的顺序如下,把每个步骤给大家写清楚,初学者跟着我下面这个步骤学,我保证你可以顺利地就业:

首选肯定是学习Java的接触,先从环境搭建开始,然后学习基础语法,再到面向对象,面向对象这个地方就有了比较大的难度,很多刚开始接触Java的人可能很难理解,所以在面向对象这个地方要多下功夫,下面继续学就是数组和集合,然后工作中常用API,IO流、反射机制、多线程和网络编程

学完以上知识后,利用这些基础知识写出两个项目进行练习,如果不练习项目就相当于白学,我当时是写了三个项目,一个ATM取款机项目、一个聊天室项目,一个图书管理系统项目,这都是阶段性的项目练习,基础非常重要,如果基础掌握得不好,后面的高级框架就没有办法听懂。

MySQL主要学习DDL、DML、简单查询、连接查询、子查询、索引、皁视囹皁事务、存储过程、连接池、三大范式、UML建模。

如果时间比较多的朋友,建议把Oracle也学一下,如果时间不多且着急就业的就只学MySQL就可以了。数据库学完后一定要进行大量的“增删改查”练习,大量的去做SQL语句的练习题,如果不去练,以后可能就废了。

前端主要就是网页三剑客,学习HTML、CSS和JavaScript。如果时间比较多的朋友,建议在了解一下jQuery和Bootstrap

学完网页三剑客后需要模仿一个静态网页写出来,建议仿照京东的官网。

主要学习内容有XML、MVC架构模式、Servlet、Filter、JSP、EL、JSTL、AJAX、代理模式、工厂模式。

这部分内容的核心思想是一定要深刻理解MVC架构模式。然后练一个MVC模式的项目实战,用servlet+Ajax+MySQL+jQuery+JDBC,主要的目的是转变你的MVC思想。项目建议写一个OA管理系统、超市订单管理系统、采购订单管理系统。至少是2个以上项目实战,如果不去练习的话,后面就会学得很困难。

主要就是会使用两个工具,一个叫Maven、一个叫Git

没什么特殊的要求,自己可以熟练掌握即可。

学习Spring、SpringMVC、MyBatis是必学的,目前大部分公司都是流行用SSM整合框架。

这部分内容还是挺困难的,如果是新手学习,也没人指导的情况下,可能很多人都是懵逼的状态。如果之前的MVC架构模式还没有深刻理解的话,估计很多人在学习框架这部分的时候都会放弃的。学完这三个框架后,就自己搭建一个框架环境,升级一下自己之前练习的MVC架构模式的项目。把Servlet换成SpringMVC,把JDBC换成MyBatis,加入Spring去解耦MVC,换完能运行就可以。然后练习2个项目,例如SSM客户关系管理系统之类的项目,或者有关于SSM的项目都可以练一下。

学习迎合市场需求的Springboot

如果在学习Springboot的时候觉得比较吃力,建议重新去过一遍Spring。学完Springboot后练习两个项目,到这个步骤便可以去面试找工作了,到达这个步骤掌握以上技术,在一线城市的薪资范围大概在8K-12K之间,具体薪资多少要看个人能力和面试过程谈的如何。

如果不满足于上述技术的朋友,想要更高的薪资,可以再拓展以下技能。

Dubbo、ZooKeeper、SpringCloud、MQ、Nginx、Redis、 Liunx、vue、多线程、设计模式、JVM优化、算法。

这些技术我本人都没学,因为我的时间有限,我打算在工作之余的时间再进行填补,为明年跳槽做技能的准备。如果连以上的技术都可以掌握,那么你的薪资范围大概会在15K-20K之间,不过千万别觉得容易,以上这些内容没有任何一个是白给的,都有一定的学习难度。

如果我上述列举的学习内容大家找不到合适的教程,可以“Java”获取,会分享质量比较高的Java学习教程,也会定期的更新,我可以证明全是免费的,因为我当初就是看的这个教程学的,所以在这里我要分享给大家。

1、代码量

学习编程最终的目的是为了写出优秀好用的软件产品,最终投放到社会,方便人们的生活。所以最终要落实到实际的代码上,学习编程不是用眼睛看出来的,而是动手写出来的,所以最后能在技术领域有一定水平的人,一定是通过大量的代码堆积出来的。但有的初学者学习编程只是看视频,却很少见过他写代码,这就完全搞错了学习编程的意义,很多人都是这样的,所以大家要注意,编程是动手落实到键盘代码上,而不是只看。

2、面向对象编程思维

Java其实就是在解决生活中的实际问题,所以当我们在写一段代码的时候,要逐渐学会用面向对象的思维来理解生活中的一切事物,用这样的角度去想,你就会发现Java其实非常好学。为什么有那么多人说自己能看懂代码,但是不会写,就是因为他没有用这样的思维方式去想,他的想法只是局限于这串代码中,而没有去思考这段代码要干什么,要解决什么生活中实际的问题。

3、学会用百度

其实我们遇到的很多问题都是可以通过自行百度解决的,如果遇到那种实在搜不到的问题,在去群里麻烦技术大佬,毕竟别人的时间不能随便浪费。利用好百度这个搜索引擎,我们可以解决很多问题,如果从开始不培养自己解决问题的能力,以后在这个行业中也很难走得太远。

4、学会正确提问

为什么要正确提问呢?对提问者而言,好处在于更清晰地描述清楚自己的问题,问题得到解决的概率更大,被提问者更愿意解答你的问题,对被提问者而言,好处在于花更少的时间去解决问题,心情更舒畅点,更愿意去解决问题。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。