Java Virtual Machine(JVM)是一个抽象的计算机,能够执行Java字节码。能针对不同的软件和硬件提供不同的JVM。因此JVM是平台独立的,JVM在平台上负责执行指令、字节码加载、检查和执行,同时还要管理数据、内存和寄存器。
Java 编译器将 Java 程序编译成虚拟机能够识别的二进制代码,这种代码称为字节码(Bytecode)。字节码就是虚拟机的机器指令,它与平台无关,有统一的格式,不依赖于具体的硬件环境,只运行在 JVM 上。JVM 在执行字节码文件时,把字节码解释成具体的机器指令执行。
Java 程序可以经解释器得到字节码,所生成的字节码经过精心设计,并进行优化,提高了运行速度。现在的 Java 版本中又加入了即时编译功能(just-in-time 编译器,简称 JIT 编译器),编译器将字节码转换成本机的机器代码,然后能够以较高速度执行,使得执行效率大幅度提高,基本达到了编译语言的水平。
在Java中,JVM将内存分配给不同的进程,方法和对象。 JVM分配的一些内存区域是:
即时编译器(Just In Time,也称为JIT编译器)用于提高Java的性能。 默认情况下启用。 它是在执行时(而不是更早)完成的。 Java通过将JIT编译器包含在JVM中来普及其使用。
Java是与平台无关的语言。 Java编译器将Java代码转换为可由JVM解释的字节代码。 JVM为世界上几乎所有流行的平台编写。
Java字节码可以相同的方式在任何受支持的平台上运行。 与其他语言一样,需要为特定平台编译的库才能运行。
你可以在Windows平台编写Java代码,同时在Windows上编译它。在Windows上编写的类和jar文件能够运行在Unix环境下。所以Java是真正的平台无关的语言。
所有这些可移植性的背后是Java字节码。 Java编译器生成的字节码可以由任何JVM解释。 因此,用Java编写程序并期望它们可以在任何平台上运行变得容易得多。
Java编译器javac
编译Java代码,而JVM java
运行该代码。
javac HelloWorld.java
java HelloWorld
在Java中,ClassLoader是用于在JVM中加载文件的类。 ClassLoader从其物理文件位置加载文件,例如 文件系统,网络位置等
Java中有三种主要的类加载器:
rt.jar
文件中加载类。jre/lib/ext
等位置加载类文件。CLASSPATH
,从该位置找到类文件。如果你指定了CLASSPATH
种jars
,那么类加载器就会加载它们。不,main只是方法的名称。 一个类文件中可以有多个具有相同名称main的方法。 它不是Java中的关键字。
不,你不能这样写。 任何方法都必须首先指定修饰符,然后再指定返回值。 修饰符的顺序可以更改。
我们可以编写static public void main()
,而不是public static void main()
。
Java不会使用任何默认值初始化局部变量。 因此,这些变量默认情况下将为null。
默认情况下,Java中参数的String数组的值为空。 不为空。
byte和char都是Java中的数字数据类型。 它们用于表示特定范围内的数字。 它们之间的主要区别是字节可以存储原始二进制数据,而char则可以存储字符或文本数据。
char的用法是 char ch ='x'
;
字节值的范围是-128至127。
一个字节由8位组成。 但是一个char由16位组成。 因此,它相当于2个字节。