Java基础知识(一)
Contents
1 面向对象和面向过程的区别
面向过程 :面向过程性能比面向对象高。因为类调用时需要实例化,开销比较大,比较消耗资源。所以当性能是最重要的考量因素的时候,比如 单片机,嵌入式开发,Linux/Unix等一般采用面向过程开发。
面向对象:面向对象易维护、易复用、易扩展。因为面向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活, 更加易于维护。但是性能比面向过程低。
2 Java语言有哪些特点
- 简单易学
- 面向对象 封装 继承 多态
- 平台无关性 Java虚拟机实现与平台无关
- 可靠性
- 安全性
- 支持多线程(C++没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程序设计)
- 支持网络编程并且方便(Java语言诞生本身就是为了简化网络编程设计)
- 编译与解释共存
3 关于JVM JDK JRE的区别
JVM
Java虚拟机(JVM)是运行Java字节码的虚拟机,JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们会给出相同的结果。 Java程序从源代码到运行的过程 .java文件(源代码)通过JDK中的javac编译成.class文件(JVM可理解的Java字节),JVM通过解释器解释为机器可执行的二进制机器码
JDK
JDK是Java Development Kit,它是功能齐全的Java SDK。拥有JRE拥有的一期,还有编译器(javac)和工具(javadoc和jdb).能够创建和编译程序
JRE
JRE是Java运行环境,是运行已编译Java程序所需的所有内容的集合。包括Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件,但是,不能用于创建新程序。
4 OracleJDK和OpenJDK的对比
问: OpenJDK存储库中的源代码与用于构建OracleJDK的代码之间有什么区别?
答: 非常接近。OracleJDK版本构建过程基于OpenJDK构建,只添加了几个部分,例如部署代码,其中包括Oracle的Java插件和Java WebStart的实现,以及一些封闭的源代码派对组件, 如图形光栅化器,一些开源的第三方组件,如Rhino,以及一些零碎的东西,如附加文档或第三方字体。展望未来,我们的目的是开源Oracle JDK的所有部分,除了我们考虑商业功能的部分
总结
1 OracleJDK版本将每三年发布一次,而OpenJDK每三个月发布一次
2 OpenJDK 是一个参考模型并且是完全开源的,而OracleJDK是OpenJDK的一个实现,并不是完全开源的
3 OracleJDK比OpenJDK更稳定,OpenJDK和OracleJDK的代码几乎相同,但是OracleJDK有更多的类和一些错误修复。 开发企业/商业软件,建议选择OracleJDK
4 在响应性和JVM性能方面,OracleJDK和OpenJDK相比提供了更好的性能
5 OracleJDK不会为即将发布的版本提供长期支持,用户每次必须通过更新到最新版本获得支持来获取最新版本
6 OracleJDK根据二进制代码许可协议获得许可,而OpenJDK根据GPL v2 许可获得许可。
5 Java和C++的区别
都是面向对象的语言,支持封装、继承、多态
Java不提供指针来直接访问内存,程序内存更加安全
Java的类是单继承的,C++支持多重继承,虽然Java的类不可以多继承,但是接口可以多继承
Java有自动内存管理机制,不需要程序员手动释放无用内存
6 什么是Java程序的主类,应用程序和小程序的主类有何不同
一个程序中可以有多个类,但只能有一个类是主类,在Java应该程序中,这个主类是指包含main()方法的类。
而在Java小程序中,这个主类是一个继承自系统类JApplet或Applet的子类。应用程序的主类不一定要求是public类,但是小程序的主类要求必须是public类。
主类是Java程序执行的入口点。
7 Java应用程序与小程序之间有哪些差别?
简单说应用程序是从主线程启动,也就是main()方法。applet小程序没有main()方法,主要是嵌在浏览器页面上运行 调用init()或者run()来启动。嵌入浏览器和flash的小游戏类似。
8 字符型常量和字符串常量的区别
1、形式上:字符串常量是单引号引起的一个字符;字符串常量是双引号引起的若干个字符
2、含义:字符串常量相当于一个整型值(ASCII值);字符串常量代表一个地址值(该字符串在内存中存放位置)
3、占内存大小:字符串常量只占2个字节;字符串常量占若干个字节(至少一个字符结束标志)(注意,char在Java中占两个字节)
JAVA编程思想第四版:2.2.2节
Author Jachin
LastMod 2019-07-18