概览:
1、什么是Java
2、面向对象与面向过程
3、Java语言的特点
4、三个版本的Java
5、JDK与JRE
6、Java和C++的异同
7、相关面试题目
1、什么是Java
Java是一门面向对象编程语言,比之C++更加简单,剔除了头文件、指针运算等。Java介于编译型语言和解释型语言之间,首先将代码由编译器编译为字节码,随后由JVM中的解释器逐行解释字节码为特定的机器码并执行,这样就实现了一次编写,到处运行的效果。
字节码类似于抽象的CPU指令,字节码文件扩展名为.class,只面向虚拟机。
JVM是针对不同平台编写的,需要为每个平台开发不同的JVM,因此SUN公司制定了一系列Java虚拟机规范,保证不同平台、不同公司开发的虚拟机都可以正确执行字节码。JVM的兼容性很好,低版本的Java字节码可以正常运行在高版本的JVM上。
JVM中的JIT编译器(即时编译器),将使用最频繁的字节码序列翻译为机器码,提高了程序运行效率。
图源网络2、面向对象与面向过程
面向过程
面向过程编程思想是站在过程的角度思考问题,强调的是功能行为、功能的执行顺序即先后顺序。
面向过程设计最小的程序单元是函数,每个函数负责完成某一个功能,用于接收输入数据、对数据进行处理、输出结果数据。整个软件系统由一个个函数组成,其中作为程序入口的函数称为主函数,主函数依次调用其他函数,普通函数可以相互调用,从而实现整个系统功能。
面向对象
面向对象是站在对象的角度思考问题,把多个功能合理地整合到不同对象中,更加符合常规思维方式,易于开发大型软件产品。面向对象可以使工程更加模块化,实现低耦合高内聚。
面向对象设计最小程序单元是类,重点在于对象和对象的接口上。
面向对象和面向过程的优缺点比较
1、面向对象的性能比面向过程低,原因:类调用需要实例化,开销大。单片机、嵌入式开发一般采用面向过程开发。
2、面向对象易维护、易复用、易扩展,得益于面向对象的封装、继承、多态特性,可以设计出低耦合的系统,使系统更加灵活、易于维护。而面向过程比面向对象难维护,难复用,难扩展。
耦合:模块之间的关联程度的度量,强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。
内聚:模块内部各个元素彼此结合的紧密程度的度量。
涉及软件工程
3、Java语言的特点
1、简单易学(比之C++,没有了头文件、指针运算等一些难以理解的特性)
2、面向对象
3、Java的网络技能强大且易于使用(把socket连接变得简单,远程调用机制使得分布式对象之间可以进行通信。)
4、健壮性(Java编译器能够检测许多在其他语言中仅在运行时检测出来的问题,Java没有显式指针,避免了内存分配错误、不必防范内存泄漏)
5、安全性(Java能够防范各种攻击如运行时堆栈溢出的蠕虫等病毒的攻击手段)
6、平台无关性(字节码能够在任何机器上解释执行,JVM实现平台无关性)
7、支持多线程
8、编译与解释并存
4、三个版本的Java
Java SE : Standard Edition. 标准版,包含标准的JVM和标准库。适宜用于开发嵌入式环境、实时环境的Java应用程序。
Java EE : Enterprise Edition.企业版,在Java SE版本上增加了大量API和库,以便开发Web应用、数据库、消息服务等。适宜用于实现企业级的买那些服务体系。
Java ME : Micro Edition. 针对嵌入式系统,Java ME的虚拟机和Java SE不同,都是简化过的版本。为在移动设备和嵌入式设备上运行的程序提供一个健壮且灵活的环境。
图源网络5、JDK与JRE
JDK(Java Development Kit) Java开发工具箱。JDK包含编译器、调试器、JRE。
JRE(Java Runtime Environment)Java运行时环境。JRE包括虚拟机、运行时库。
JRE用于运行字节码,而JDK编译源码得到字节码。
图源网络6、Java和C++的异同
1、都是面向对象的语言,支持封装、继承、多态
2、Java不提供指针来直接访问内存,程序内存更加安全
3、Java的类时单继承,C++是多继承
4、Java有自动内存管理机制,不需要程序员手动释放无用内存
7、相关面试题
什么是Java
JDK1.5后的三大版本
JVM、JRE、JDK的关系
Java语言特点
什么是字节码?字节码的好处?
Java与C++区别
https://blog.csdn.net/thinkwon/article/details/104390612
网友评论