以涯教育
19987177472

给Java新手的一些建议——Java知识点归纳(Java基础部分)

53
发表时间:2018-11-01 00:00

写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java。
  这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE相关的、和Java中各个框架相关的内容。
  经过这么多年的Java开发,以及结合平时面试Java的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。

1. JVM相关(包括了各个版本的特性)

对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资深来说,不会JVM几乎是不可接受的。
  JVM作为java运行的基础,很难相信对于JVM一点都不了解的人可以把java语言吃得很透。我在面试有超过3年Java经验的的时候, JVM几乎就是一个必问的问题了。当然JVM不是为数不过决定技术能力好坏的面试问题,但是可以佐证java开发能力的高低。
  在JVM这个大类中,我认为需要掌握的知识有:
JVM内存模型和结构
GC原理,性能调优
调优:Thread Dump, 分析内存结构
class 二进制字节码结构, class loader 体系 , class加载过程 , 实例创建过程
方法执行过程
Java各个大版本更新提供的新特性(需要简单了解)

2. Java的运行(基础必备)

这条可能出看很简单,java程序的运行谁不会呢?不过很多时候, 我们只是单纯通过IDE去执行java程序,底层IDE又是如何执行java程序呢?很多人并不了解。
  这个知识点是基本的java需要掌握的,初学java,靠前个肯定是教你如何在命令行中执行java程序,但是很多人一旦把java学完了,IDE用上了,就把这个都忘了。为什么强调要知道这个呢,知道了java纯粹的启动方式之后,你才能在启动出问题的时候,去分析当时启动的目录多少,执行命名如何,参数如何,是否有缺失等。 这样有利于你真正开发中去解决那些奇奇怪怪的可能和环境相关的问题。
  在这里需要掌握的知识有:
javac 编译java文件为 class 文件
java 命令的使用, 带package的java类如何在命令行中启动
java程序涉及到的各个路径(classpath, java。library。path, java运行的主目录等)

3. 数据类型

这条没有什么好多说的,无非就是Java中的基本类型和对象类型的掌握。可以再了解一些JDK如何自动转换方面的知识,包括装箱拆箱等,还要注意避免装箱之后的类型相等的判断
  主要知识点:
基本类型: int, long, float, double, boolean , 。。。
对应的对象类型: Integer 等类型到基本类型的转换, 装箱和拆箱
Object类型: equals, hashcode
String 类型的特点

4. 对象和实例,对象的创建

在这方面,需要了解class和instance的概念以及之间的差别, 这是java面向对象特性的一个基础。主要知识点有:
Class和 Instance 的概念
Instance 创建的过程:
  1。 无继承:分配内存空间, 初始化变量, 调用构造函数
  2。 有继承:处理静态动作, 分配内存空间, 变量定义为初始值 , 从基类->子类, 处理定义处的初始化, 执行构造方法
  需要注意的点:
    静态属性等从基类->子类进行初始化
    默认无参构造方法相关的特性  

5. 访问控制

这也是java封装特性的一个基础,需要掌握的有:
public protected default private 对于class, method, field 的修饰作用

6. 流程控制

Java 流程控制的基础, 虽然有些语法不一定很常用,但是都需要了解,并且在合适的地方使用它们。
需要掌握的有:
if, switch, loop, for, while 等流程控制的语法

7. 面向对象编程的概念

这是一个java的核心概念,对于任何java都需要熟练掌握。Java中很多特性或者说知识点都是和java面向对象编程概念相关的。在我的理解,一个好的不仅仅需要了解这些特性(知识点)本身,也更需要知道这些对象在java的面向对象编程概念中是如何体现出来的,这样更有利于掌握java这门开发语言,以及其他面向对象编程的语言。在这里只是简单罗列了一下,主要的知识点包括有:
面向对象三大特性:封装,继承,多态; 各自的定义概念,有哪些特性体现出来,各自的使用场景
静态多分派,动态单分派的概念
重载的概念和使用
继承:接口多实现,基类单继承
抽象,抽象类,接口
多态:方法覆盖的概念和使用
接口回调

8. Static

静态属性在java日常开发中也是经常使用,需要了解和 static 关键字相关的用法,还有和其他关键字的配合使用, 如是否可以和 abstract, final 等关键字联合使用。
主要需要掌握的有:
静态属性的定义,使用,以及类加载时如何初始化
静态方法的定义和使用
静态类的定义和使用
静态代码块的定义和初始化时机

9. 基础知识点

这里主要罗列一些散落的,没有系统归类的一些java知识点。在日常的开发中用到也不少。 这块内容其实还有很多,目前只是暂时归纳了这几个在这里:
  包括有:
equals , hashcode , string/stringbuffer ,final , finally , finalize

10.集合框架

这个是一个需要多加掌握的部分,做java开发,可以说没有不用到集合框架的,这很重要。但是这里的知识点并不难,但是对于集合较好要了解内部的实现方式,因为这样有助于你在各个不同的场景选择适合的框架来解决问题,比如有1W个元素的集合,经常要进行contains判断操作,知道了集合的特性或者内部实现,就很容易做出正确的选择。
  这里包括了如下内容(并发相关不包含在内):
集合框架的体系: 基础Collection ,Map
具体集合实现的内容, List ,Set ,Map 具体的实现,内部结构, 特殊的方法, 适用场景等
集合相关的工具类 Collections 等的用法

11.异常框架

异常在java的开发中可能没有那么被重视。一般遇到异常,直接上抛,或者随便catch一下处理之后对于程序整体运行也没有什么大的影响。不过在企业级设计开发中, 异常的设计与处理的好坏,往往就关系着这个系统整体的健壮性。一个好的系统的异常对于来说,处理应该统一,避免各处散落很多异常处理逻辑;对于系统来说,异常应该是可控的,并且是易于运维的,某些异常出现后,应该有应对的方法,知道如何运维处理,所以虽然异常框架很简单,但是对于整个企业级应用开发来说,异常处理是很重要的,处理好异常就需要了解Java中的异常体系。
  这部分需要掌握的知识点不多,主要就是:
异常的体系:
Throwable
Exception
RuntimeException
Error
RuntimeException 和 一般 Exception 的区别, 具体处理方法等

12. Java IO

IO 在java中不仅仅是文件读写那么简单,也包括了 socket 网络的读写等等一切的输入输出操作。比如说 标准HTTP请求中Post的内容的读取也是一个输出的过程,等等…
  对于IO,Java不仅提供了基本Input、Output相关的api,也提供了一些简化操作的Reader、Writer等api,在某些开发(涉及大量IO操作的项目)中也很重要,一般日常的开发中也会涉及(日志,临时文件的读写等)。
  在这中的知识点主要有:
基本IO的体系: 包括有InputStream , OutputStream, Reader/Writer, 文件读取,各种流读取等
NIO 的概念, 具体使用方式和使用场景

13.多线程并发

多线程是Java中普遍认为比较难的一块。多线程用好了可以有效提高cpu使用率, 提升整体系统效率, 特别是在有大量IO操作阻塞的情况下;但是它也是一柄双刃剑, 如果用不好,系统非但提升不大,或者没有提升,而且还会带来多线程之间的调试时等问题。
  在多线程中内容有很多,只是简单说明一下Java中初步使用多线程需要掌握的知识点,以后有机会单独再详细介绍一些特性的使用场景。
多线程的实现和启动
callable 与 runable 区别
syncrhoized ,reentrantLock 各自特点和比对
线程池
future 异步方式获取执行结果
concurrent 包
lock
..

14.网络

Java中也是提供了可以直接操作 TCP协议、UDP协议的API。在需要强调网络性能的情况下,可以直接使用TCP/UDP 进行通讯。在查看Tomcat等的源码中,就可以看到这些相关API的使用情况。不过一般也比较少会直接使用TCP,会使用诸如MINA、Netty这样的框架来进行处理,因为这个方面的开发涉及不多,所以就不再详细罗列了。

15.时间日期处理

几乎对于每个应用来说,时间日期的处理也是绕不过去的,但是JDK8 之前的时间相关API用法并不友好。在那个时代,可以选择Joda等时间框架。到了JDK8 发布之后,全新的时间API基本融合了其他框架的优点,已经可以很好的直接使用了。
  对于Java来说,需要熟练地使用API来对时间和日期做相关的处理。
  具体知识点不再罗列,会在以后再写个专门的文章来总结一下JDK8中时间日期API的用法。

16.XML解析/ JSON解析

其实这两块内容都不是J2SE里面的内容,但是在日常开发中,和其他程序交互,和配置文件交互,越来越离不开这两种格式的解析。
  不过对于一个来说,能够了解一些XML/JSON具体解析的原理和方法,有助于你在各个具体的场景中更好的选择合适你的方式来使得你的程序更有效率和更加健壮。
  XML: 需要了解 DOM解析和 SAX解析的基本原理和各自的适用场景
JSON: 需要了解一些常用JSON框架的用法, 如 Jackson, FastJson, Gson 等。。

17.Maven的使用

Maven也不是Java里面的内容,但是maven是革命性的,给java开发带来了巨大的便利。从依赖的引入和管理,开发流程的更新和发布产出,乃版本的更新,使用maven可以大大简化开发过程中的复杂度,从而节省大量时间。可以说,maven已经成为java的标配了。所以我把maven也作为一个java对于基础必备的知识点。以后会再放上一些我的一些对于maven使用的经验和技巧等,这里就不再细说了。

18.泛型

这是JDK5开始引入的新概念,其实是个语法糖,在编写java代码时会有些许便利, 一般的应用或者是业务的开发,只需要简单使用,不一定会用到定义泛型这样的操作, 但是开发一些基础公共组件会使用到,可以在需要的时候再细看这个部分,一般情况下只要会简单使用即可。

19.标注

也是jdk5 之后引入的。spring是个优秀的框架,开始就以xml作为标准的配置文件。不过到了Spring3 之后,尤其是 spring-boot 兴起之后,越来越推崇使用标注来简化xml配置文件了,对于来说,可以节省不少xml配置的时间。但是劣势是在于标注散落在各个类中,不像xml,可以对所有配置有个全局性的理解和管理,所以还没有办法说就取代所有的xml。对于一般,会使用标注即可,一些公共组建的可能会需要了解标注的定义和实现,可以在具体需要的时候再细看。

20.RMI

RemoteMethodInvocation ,Java语言特有的远程调用接口,使用还是比较简单方便。不过需要跨语言的情况下,就需要使用 webservice 等其他方式来支持。一般来说,程序都不需要使用RMI,不过可以在特定的情况下使用,我就在一个项目中,使用RMI来进行程序远程启动停止的控制。

21.JNI

Java Native Interface,可以允许Java中调用本地接口方法,一般用于C/C++代码的调用。需要注意的是在java中加载so/dll文件的路径问题,本身调用接口并不复杂,但是经常在是否加载了所需的本地接口库中花费较多时间。

以上也只是简单介绍了下我对于这些java基本知识点和技术点的一些看法和介绍, 这些内容都源自于我这些年来使用java的一些总结, 希望给刚刚接触Java, 或者打算从Java开发的人一些经验, 希望能够更有效率地学习和使用java, 避免走了弯路浪费了宝贵的时间。这当中还有些内容不够完善的地方,会通过以后的文章再添加上。由于个人能力有限,当然其中也会有些错误和疏漏,欢迎指正,一起讨论,共同来把这篇文章再完善下,希望它可以真正帮助到有需要的人。


近期更新

近期更新

副标题

在数字化浪潮席卷全球的今天,某跨国企业市场部主管张女士在季度汇报时,因无法快速生成动态数据图表而错失项目展示良机。这个真实案例折射出职场人士面临的普遍困境:在智能化办公时代,传统办公软件技能已不足以应对现代职场挑战。成人电脑培训班正成为职场人士突破技能瓶颈的重要跳板。一、办公软件能力重构职场竞争格局麦肯锡全球研究院报告显示,2025年全球将有50%的工作内容实现自动化,其中办公软件操作能力成...
2025-03-27
2
在社区服务中心的电脑教室里,65岁的退休教师王爱玲正颤抖着手指点击鼠标,屏幕上的光标却总是不听使唤地乱窜。这个场景折射出中国1.8亿银发族面临的数字化困境。成人电脑基础培训班不是简单的技能传授,而是一场关乎社会包容的数字化平权运动。一、被数字鸿沟割裂的现代社会当年轻人用5秒钟完成扫码点餐时,菜市场里仍有老人攥着现金不知所措;当移动支付覆盖城乡每个角落,银行柜台前依然排着缴纳水电费的银发长队。...
2025-03-27
0
在数字经济蓬勃发展的今天,计算机技能已成为职场竞争力的核心要素。无论是企业数字化转型的迫切需求,还是个人职业赛道的切换,掌握计算机技术都成为关键突破口。然而,传统教育模式周期长、内容更新滞后等弊端,让越来越多职场人和求职者将目光投向‌计算机短期培训‌。这种灵活高效的学习方式,正在为不同背景的学习者提供快速进入数字行业的"黄金船票"。一、短期培训为何成为职场转型利器?根据全球权威IT咨询机构G...
2025-03-27
6
在杭州未来科技城的一家编程培训机构里,30名学员正对着屏幕敲击键盘,他们的电脑桌面上同时运行着Python解释器、MySQL数据库和Git版本控制系统。这些学员中,有刚毕业的文科生,有想转行的销售主管,也有为子女报名的中年家长。这个场景折射出当前计算机培训市场的火热现状,也暴露出行业发展的深层矛盾:当技术迭代速度超过教育规律时,我们该如何重新定义计算机培训的价值?一、计算机培训市场的迷思与困...
2025-03-27
6
在深圳科技园某栋写字楼里,28岁的陈思雨正用Python编写自动化测试脚本,三年前从文员岗位裸辞参加全栈开发培训的经历,让她成功转型为年薪35万的IT工程师。这个案例折射出数字经济时代职业技能重塑的浪潮——电脑培训机构正在成为职场人士突破职业瓶颈的"第二大学"。面对人工智能、云计算等技术迭代加速,传统职业教育模式已难以满足市场需求,新一代电脑培训机构正在构建更具竞争力的培养体系。一、技术迭代...
2025-03-27
0
在杭州未来科技城的一间智能教室里,28岁的张薇正在调试自己设计的智能仓储管理系统。半年前,这位服装店长还对着满架库存发愁,如今已能用Python编写库存预警算法。这个转变的起点,正是她参加的全栈开发集训营。当前,中国数字经济规模突破50万亿元,计算机培训正在成为职场人重塑竞争力的核心赛道。一、市场需求催生培训新形态工信部最新数据显示,2023年我国数字化人才缺口达到1100万,其中云计算工程...
2025-03-27
1
在人工智能渗透率达42%的今天,企业数字化转型催生出2000万+的数字化人才缺口。面对这场职场革命,传统学历教育4年培养周期与企业用人需求间的断层愈发明显,计算机培训短期速成班正以精准的行业定位和实战化教学,构建起职场进阶的"数字立交桥"。一、靶向培养破解行业痛点以某头部IT培训机构2023年就业报告为例,其Java开发方向学员平均学习周期仅5.8个月,结业后入职企业包含阿里云、字节跳动等头...
2025-03-27
12
在超市自助结账区,一位银发老人拿着手机反复比划扫码位置;社区服务中心里,中年务工者面对电子表格急得满头大汗;医院自助挂号机前,穿着朴素的大叔对着触摸屏手足无措......这些场景每天都在城市的各个角落上演。当我们享受着扫码支付、在线挂号、云端办公的便利时,仍有超过3亿中国成年人被困在数字鸿沟的另一端。真正的电脑零基础培训,不仅是操作指南的传授,更是打开数字文明大门的钥匙。一、认知重建:打破科...
2025-03-27
4
在超市结账时因不会操作自助收银机而手足无措的中年父亲,办公室因PPT排版混乱被领导退回的职场新人,抖音直播间里不会设置商品链接的个体店主——这些场景正在城市各个角落真实上演。当数字化转型渗透到就医挂号、社区登记、求职应聘等生活全场景,掌握基础电脑技能不再是年轻人的专利,更是成年人延续社会参与能力的通行证。一、银发族破冰:重新定义退休生活半径‌位于社区活动中心三层的"夕阳红数字课堂",每周二上...
2025-03-27
0
在数字经济浪潮席卷全球的当下,计算机培训机构如雨后春笋般涌现。这个价值千亿的市场看似繁荣,实则暗礁密布。当Python课程广告铺满地铁车厢,云计算培训占据短视频流量高地,我们不得不思考:在这场全民编程热潮中,培训机构究竟扮演着怎样的角色?一、行业繁荣背后的结构性困局据工信部最新数据显示,我国数字经济人才缺口在2023年已达1100万,且以每年20%的速度递增。这种人才供需失衡催生了庞大的培训...
2025-03-27
6
上一页 1 2 3
...
下一页
网上预约 减免学费

网上预约 减免学费

每月仅3个名额,先到先得

姓名
*
课程/证书
*
手机号
*
所在城市
*
点击提交
网上预约 减免学费

网上预约 减免学费

每月仅3个名额,先到先得

姓名
*
课程/证书
*
手机号
*
所在城市
*
点击提交
添加老师微信
关于我们 联系我们 | 免责声明 | 网站地图
学习路线 Java学习路线 | Python学习路线 | PS学习路线 | 室内设计学习路线 | 新媒体运营学习路线
热门课程 Java | HTML5Python | 大数据 | UI/UE云计算 | 网络工程 | Unity | 影视剪辑
3~7天掌握一个新技能
19987177472
24小时在线咨询
热点话题 零基础学IT-IT学习笔记-IT技术干货-IT培训机构-IT应聘面试-IT职场就业