文章目录
第一,万物皆对象?
Java中万物皆对象,表示一切类继承于Object类。
第二,JDK和JRE?JVM和HotSpot虚拟机的关系?平台无关性和语言无关性的辨析?
问题1:一句话总结JDK和JRE?
回答1:JDK是Java开发工具,jre是Java运行环境;Java开发需要JDK,Java运行需要JRE。
问题2:JVM和HotSpot虚拟机的关系?
问题2:JVM是运行.class文件的平台,是理论上的,HotSpot虚拟机实现JVM一种方式,是实际上的。所以,我们使用的是HotSpot虚拟机实现的JVM。
问题3:平台无关性和语言无关性的辨析?
回答3:
平台无关性:java程序只要配合上JVM,就可以在任何操作系统是运行,本质是因为JVM平台可以在任何操作系统上搭建;
语言无关性:JVM只运行.class文件,而并不需要这个.class文件是.java文件编译生成的,可以是其他语言生成的,只要是.class文件就好。
第三,Java IO?
Java中提供的IO有关的API,在文件处理的时候,其实依赖操作系统层面的IO操作实现的。可以把Java中的BIO、NIO和AIO理解为是Java语言对操作系统的各种IO模型的封装。程序员在使用这些API的时候,不需要关心操作系统层面的知识,也不需要根据不同操作系统编写不同的代码。只需要使用Java的API就可以了。
第四,启动:Java编译 + Java解释执行?
Java程序使用 javac进行编译 和 java进行执行。
javac:java编译器,将源代码变成称字节码,A.java文件变为A.class文件,JVM只能识别.class文件,这就是JVM的语言无关性,JVM可以在不同操作系统上执行,这就是JVM的平台无关性,跨平台。
java:java解释器,用来执行Java程序的字节码文件。
javac 后面跟着的是java文件的文件名,例如 HelloWorld.java。 该命令用于将 java 源文件编译为 class 字节码文件,如: javac HelloWorld.java。运行javac命令后,如果成功编译没有错误的话,会出现一个 HelloWorld.class 的文件。
java 后面跟着的是java文件中的类名,例如 HelloWorld 就是类名,如: java HelloWorld。
注意:java命令后面不要加.class。
问题:如果javac 编译时报"编码GBK的不可映射字符"?
解决1:加上编译格式,即 javac -encoding UTF-8 XXX.java;
解决2:将java文件保存为ANSI格式,然后用javac xxx.java
第五,结束:JVM垃圾收集器 同步运行与异步运行?
1、垃圾收集器作为一个线程运行。
2、当系统的内存用尽或程序中调用System.gc()要求进行垃圾收集时,垃圾收集线程与系统同步运行。
3、其他情况下,垃圾收集器在系统空闲时异步地执行。