初识Java
卷首语:非科班出身,因为兴趣入坑,也是最近才挤出大量时间去学习Java,并不是很专业,但是希望大佬们多给些建议,欢迎讨论,私信都会回(毕竟也没啥人看!)!欢迎进入小何的Java修炼之路!
1.1Java起源
SUN公司1991年成立由詹姆斯·高斯林(James Gosling)领导的“Green”小组创造了Java。Java是由C++改造而来的,面向对象语言。(什么是面向对象?补查)因为非科班出身所以在学习过程中会遇到没听过的词,所以有时候顺序并不严谨,有过一些FPGA设计的经验,可能了解的都是比较偏硬件设计的地方,在学习中也会比对软硬件设计的区别。
1.2面向对象编程:OOP(Object Oriented Programming)
早期编程是面向过程的,将现实的事物抽象出来,把现实事务以及关系,抽象成类,通过继承,实现,组合的方式把万事万物都给容纳了,实现了对现实世界的抽象和数学建模。
面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。
面向对象时模型化的,你只抽出来一个**类,**这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必一步一步地实现,至于这个功能是如何实现的,和我们无关,会使用即可。(这也是Java好用的主要原因,大佬们封装的好。)
面向对象的底层还是面向过程,把面向过程抽象成类,然后封装,方便我们使用的就是面向对象了。
面向过程和面向对象的区别:
面向过程:
优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较耗资源。
缺点:不易维护、不易复用、不易拓展
面向对象:
优点:易维护、易复用、易拓展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
缺点:性能比面向过程差。
面向对象三大特征五大原则:
面向对象的三大特性:
1、封装 隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。
2、继承 提高代码复用性;继承是多态的前提。
3、多态 父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。
五大基本原则:
1、单一职责原则SRP(Single Responsibility Principle) 类的功能要单一,不能包罗万象,跟杂货铺似的。
2、开放封闭原则OCP(Open-Close Principle) 一个模块对于拓展是开放的,对于修改是封闭的,想要增加功能热烈欢迎,想要修改,哼,一万个不乐意。
3、里式替换原则LSP(the Liskov Substitution Principle LSP) 子类可以替换父类出现在父类能够出现的任何地方。比如你能代表你爸去你姥姥家干活。哈哈~~
4、 依赖倒置原则DIP(the Dependency Inversion Principle DIP) 高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。就是你出国要说你是中国人,而不能说你是哪个村子的。比如说中国人是抽象的,下面有具体的xx省,xx市,xx县。你要依赖的抽象是中国人,而不是你是xx村的。
5、接口分离原则ISP(the Interface Segregation Principle ISP) 设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。就比如一个手机拥有打电话,看视频,玩游戏等功能,把这几个功能拆分成不同的接口,比在一个接口里要好的多。
面向对象特点总结
1、 抽象会使复杂的问题更加简单化。
2、 从以前面向过程的执行者,变成了张张嘴的指挥者。
3、 面向对象更符合人类的思维,面向过程则是机器的思想
1.3Java演变
JavaSE:应用于桌面环境
JavaEE:基于Java的应用服务器
JDK从1.0开始发展1.5开始改名为5.0 会有标注长期支持版本
**JDK有很多版本,并不是越新的越好,但是初学者尽量找个长期支持版本**
2.1Java体系与特点
JavaSE:Java Platform,Standard Edition
标准版:各应用平台的基础,桌面开发和低端商务应用的解决方案。
JavaEE:Java Platform,Enterprise Edition
企业版:以企业环境而开发程序的解决方案(**学习目标**)
JavaME:Java Platform,Micro Edition
微型版:致力于消费产品 和嵌入式设备的最佳解决方案
2.2 Java特性
纯面向对象
跨平台语言
吸收了C/C++的优点
较高安全性(自动回收垃圾,强制类型检查,取消指针)
2.3Java跨平台原理
JVM 理解:
JVM是Java Virtual Machine(Java虚拟机)的缩写,可以实现Java字节码的虚拟计算机系统
他有一个解释器组合,可以实现Java字节码与计算机操作系统之间的通信
对不同的平台,有着不同的JVM
Jvm屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”
2.4垃圾回收器(GC)
不再使用的内存空间应当进行回收-垃圾回收
C/C++中程序员负责回收无用内存
Java语言消除了程序员回收无用内存空间的责任
JVM提供了一个系统线程,用于跟踪存储空间的分配情况,检查并释放那些可以被释放的存储空间。
垃圾回收器在Java程序应用过程中自动启动,程序员无法精准控制
2.5JDK
(Java Development Kit)
Java 开发工具包,提供了Java的开发环境和运行环境
2.6JRE
( Java Runtime Environment ;Java 运行环境)
1.加载代码 由类加载器(class loader)完成
2.校验代码 由字节码校验器(byte code verifier)完成
3.执行代码 由运行时解释器(runtime interpreterm)完成
2.8API
(Application Programming Interface;应用程序编程接口)
1.Java编译器(java.exe)
2.Java运行时解释器(java.Exe)
3.Java文档化化工具(javadoc.exe)
4.工具资源