「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战」。
Java从零开始再学习
java不仅仅是一种语言,它更是一个平台,有一个庞大的库,其中包含了很多可重用的代码,以及一个提供诸如安全性、跨操作系统的可移植性以及自动垃圾收集等服务的执行环境。 -《JAVA核心技术卷》第11版。
java作为一个如今广受好评的语言,学习JAVA的人很多(卷是真的卷),现在我所处的时间阶段是大二上学期,我觉得有必要利用这个寒假来整体梳理一下JAVA的知识点。所以开了一个JAVA从零开始再学习专栏,希望可以再次体验java的美妙之处。如果存在错误的地方我希望大家可以帮助我改正,欢迎大家斧正。
ps: 我在这个专栏里会经常引用《JAVA核心技术卷》的内容,这套书籍是我复习时的指路人,也向大家推荐这本书。我在读过后,感觉受益匪浅,十分推荐给大家。
Java特性及术语
如图:
(1)简单性
众所周知①Java 是由 C++发展而来的。**java去除了C++的一些繁重功能,保留了C++的一些核心特性。*在书中写到「Java语法是C++语法的纯净版。没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚类等」*这样一来,java开发者就可以把注意力更加的集中到面向对象等一些保留下来的核心特性上,实际上保留下来的这些特性才是java开发者真正需要注意的特性。
java的简单性还指的是②java环境相对于其他语言来说小了许多,基本的解释器以及类支持只要40多kb,这样的特点,可以让java在一些简单的机器上也能运行起来。所以我们平时可以看到在一些小家电上也能完美的运行java程序。
(2)面向对象
面向对象并不是java所特有的特性,它是由C++传承下来的核心特性之一。面向对象特性更想是一种思想,非面向对象的和面向对象的可以看成两个木匠的不同设计思路,下面我们用一个图来体现这个思想。
java和c++在面向对象里存在一些区别,C++可以实现多继承,而java取而代之的是接口概念,在java里一个类可以实现多个接口。更加详细的内容我们在之后会再次提出。
(3)分布式
「java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样」,书中对分布式的形容是这样的。简单来说就是java中存在一个方法库,可以提供HTTP等协议来请求网络上的其他服务器上的类。比如说,最近的微信登入功能,就需要你通过HTTP协议提供URL来访问对应接口,取得用户信息。
分布式的理念就是把服务或者说业务放到不同的计算机中通过网络协议来实现请求,可以有效的降低耦合度,已经在一个服务端计算器出问题时,不影响另一个服务端提供服务。具体的我会在之后说springCloud或者其他涉及分布式的技术时在进行说明。
(4)健壮性
「java编译器可以检测许多在其他语言中仅在运行时才能够检测出来的问题」,健壮性就是指语言在运行前时的检测能力,和在运行中的不易出错的能力,一个语言的健壮性是它是否可以长久使用的标准,java语言把C++的指针运算去除了,避免了一些因为指针运算而产生的内存错误。使java的运行更加不易出错。
(5)安全性
java程序要涉及web项目,或者分布式特性,所以安全十分重要主要破坏攻击为:使运行时堆栈溢出,破坏自己运行空间之外的内存,未经授权读写文件。在之前java因为会把不可信代码放到沙箱环境中执行,不会影响主程序,所以对不可信代码是可以任意下载的,但是在后来,在黑客的攻击下,java浏览器插件,限制了远程代码的下载,需要数字签名以及用户的同意。
(6)体系结构中立
编译器生成一个体系结构中立的编译过的代码,这样的代码可以在许多处理器上执行。在java中编译器是通过生成和计算机体系结构无关的字节码指令来实现这一个特性。
(7)可移植性
这个性质和体系结构中立性质有点相像同样和java虚拟机有很大的关系,但是这个性质强调的是java程序可以在许多平台上移植使用,比如说在C和C++语言中int可能为16字节或者32字节也可能是其他字节数,而java中规定为32字节无论是在哪个平台上都是一样的。对比起来看,C或者C++程序可能会因为平台不同而运行起来出现异常,比如一个数使用int类型储存但是超过了16个字节大小,在只能是16字节大小的int平台上就会出现错误,而java不会。
(8)解释型
java解释器可以在任何移植了解释器的机器上直接执行java字节码。
(9)高性能
java的编译器具有很出色的优化性能功能,比如监控代码频繁执行,优化这些代码。知道哪些类已经加载过了消除函数调用(内联)。
(10)多线程
现在对处理器的追求从更快逐渐转变到更多,就看如今的CPU厂家对高端CPU的要求也把核心数当成重要的标准。在当时CPU核心数还不多的情况下,java就最求并发编程,确保用户界面更加生动。java多线程的特性我们在以后接触到了会更加详细的说明。
(11)动态性
动态性指的是可以在运行的过程中增加或者修改代码,java有这样的特性,这个是java的优势之一。反射是java动态性的体现后面我们也会,详细介绍