1.1JVM、JRE和JDK的区别?

答:
JDK>JRE>JVM.
JVM(java虚拟机):即解析器,解决java跨平台问题(实质是跨虚拟机).
JRE(java运行环境):包含JVM和java基础类库.
JDK(java开发工具包):包含JRE和java程序调试和分析的工具.


1.2环境变量path和classpath的作用是什么?

答:
Path:指定命令搜索路径.
CLASSPATH:指定类搜索路径.


1.3java语言的三种技术架构?

答:
JAVAEE企业级开发
JAVASE标准版开发
JAVAME小型版


1.4说说java语言的跨平台性?

答:
主要是借助jvm,平台可以理解为CPU+OS,写好的java源文件通过JAVAC命令编译生成class文件,然后JVM对class文件进行执行,生成机器语言,就可以在平台上运行了.


1.5编写一个java应用程序,并简单说明其运行原理:
class HelloWore{
	public static void main(String [] args){
		System.out.print("2019年5月9日,晚");
}
}

答:
此JAVA源文件通过JAVAC命令编译生成class文件,然后通过JVM对class文件进行执行,生成机器语言.


1.6GC是什么? 为什么要有GC?

答:

GC(garbage collection):垃圾收集,防止内存泄露.GC通常作为一个单独的低优先级的线程在不可预知的情况下运行.
JAVA是由C++发展而来,GC的出现,摒弃了C++繁琐的内存管理,使服务器端的编程减少了内存泄露;但是,现在的Android开发中GC也是饱受诟病.


1.7一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

答:
一个”.java”源文件可以包括多个类,但是只允许有一个public类(每个编译单元只能有一个公开的接口),并且类名必须和文件名一致.


1.8此处,Something类的文件名叫OtherThing.java可以吗?
class Something {
    private static void main(String[] something_to_do) {        
        System.out.println("Do something ...");
    }
}

答:
不可以,文件中只有一个类,文件名必须和类明一致.


1.9

(1)垃圾回收器的基本原理是什么?
(2)垃圾回收器可以马上回收内存吗?
(3)有什么办法主动通知虚拟机进行垃圾回收?
答:

(1)当对象被new出来时候,GC就开始监控这个对象的地址、大小、使用情况,通常GC采用有向图的方式记录和管理堆中的所有对象,从而确定对象是否可达,若不可达,GC就回收这些内存空间.
(2)可以.
(3)请求垃圾收集,可以调用下面;
①System.gc();
②Runtime.getRuntime().gc()
但是,由于GC是在一个很低的线程中运行,所以不一定会执行.