![c54ef95f23ea0986ea526844a6f9a5f3.png](https://i-blog.csdnimg.cn/blog_migrate/d1d7d737a115b7f1bd0bc205cd8441b3.jpeg)
java的运行原理
这里我们简单分析一下我们的第一个应用程序,其中涉及到很多没有接触过的概念,大家可先阅读以下,以后会详细讲解。重点是理解java的运行原理。
一、分析程序
1、符号 /* */ 指示中间的语句是该程序中的注释。多行注释以 /* 开始,以 */ 结束。单行注释以 // 开始,以行末结束
java文档注释使用/** */。
2、关键字 class 声明类的定义,还帮助编译器理解它是一个类的声明。
3、整个类及其所有成员都是在一对大括号中(即 { 和 } 之间)定义的。它们标志着类定义块的开始和结束。
4、程序从 main( ) 方法开始执行。
5、关键字 public 是一个访问说明符,控制类成员的可见度和作用域。
6、关键字 static 允许调用 main( ) 方法,而无需创建类的实例。
7、关键字 void 告诉编译器 main( ) 方法在执行时不返回任何值。
8、main( )方法是所有Java 应用程序的起始点。
9、args[ ]是String类型的数组。
10、println( )方法通过 System.out 显示作为参数传递给它的字符串。
二、运行原理
1、java虚拟机JVM。JVM是java语言最大的特点,java的优缺点也是缘于JVM技术。JVM是一个可运行Java字节码的虚拟计算机系统。它有一个解释器组件,可以实现Java字节码和计算机操作系统之间的通信。还包括一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的字节码,就可以在多种平台上不加修改地运行。这个也是java最大的特色跨平台性,也就是一处编写,处处运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。编译虚拟机的指令集与编译微处理器的指令集非常类似。这就是java最受人批评的一个地方,运行在JVM上面当然没有直接运行在操作系统上快。所以有人总是说java的运行速度比不上C语言。
![ac3bfadb03ea4c52e30a680a2d00c15c.png](https://i-blog.csdnimg.cn/blog_migrate/4a4a486d41e6d4eba3ab554739e42db3.jpeg)
2、java程序的运行原理。
![4e3ccf60092eaba3abe7882e264b4707.png](https://i-blog.csdnimg.cn/blog_migrate/e32a9effa90c8400f8f62be78b1dff6b.jpeg)
三、常见的问题
1、javac不是内部命令 或者可执行文件
在DOC命令下,可以运行Java命令,但是在编译源代码时却不能运行javac命令,并提示“javac不是内部命令 或者可执行文件”,出现这种情况一般是由于Path的环境变量的路径有问题。因为我们输入的任何命令,操作系统都会根据Path设定的路径去找这些命令,如果找不到就会出现这个错误,特别注意的是最后的分号要写上。
3、语法错误。例如:类名和文件名不一致,英文关键字的大小写问题没有注意。还得注意标点符号不能使用中文符等。
4、java命令不能运行class
javac能正常编译,但是在输入 java helloWorld运行是去报出了下面一行代码提示。
“Exception in thread "main" java.lang.NoClassDefFoundError: Hello World”提示
根据提示,意思是找不到class文件。这个问题应该就是是classpath环境变量配置不对,检查你的classpath的设置,注意一些特殊的符号。然后重启DOS再试一次。