问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Java的详细运行步骤

发布网友 发布时间:2022-04-23 20:02

我来回答

2个回答

热心网友 时间:2023-01-20 14:13

Java程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码(ByteCode)
2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言( "semi-interpreted" language)。
下面通过以下这个java程序,来说明java程序从编译到最后运行的整个流程。代码如下:
//MainApp.java
public class MainApp {
public static void main(String[] args) {
Animal animal = new Animal("Puppy");
animal.printName();
}
}
//Animal.java
public class Animal {
public String name;
public Animal(String name) {
this.name = name;
}
public void printName() {
System.out.println("Animal ["+name+"]");
}
}
第一步(编译): 创建完源文件之后,程序会先被编译为.class文件。Java编译一个类时,如果这个类所依赖的类还没有被编译,编译器就会先编译这个被依赖的类,然后引用,否则直接引用,这个有点象make。如果java编译器在指定目录下找不到该类所其依赖的类的.class文件或者.java源文件的话,编译器话报“cant find symbol”的错误。

编译后的字节码文件格式主要分为两部分:常量池和方法字节码。常量池记录的是代码出现过的所有token(类名,成员变量名等等)以及符号引用(方法引用,成员变量引用等等);方法字节码放的是类中各个方法的字节码。下面是MainApp.class通过反汇编的结果,我们可以清楚看到.class文件的结构:
第二步(运行):java类运行的过程大概可分为两个过程:1、类的加载 2、类的执行。需要说明的是:JVM主要在程序第一次主动使用类的时候,才会去加载该类。也就是说,JVM并不是在一开始就把一个程序就所有的类都加载到内存中,而是到不得不用的时候才把它加载进来,而且只加载一次。
下面是程序运行的详细步骤:
在编译好java程序得到MainApp.class文件后,在命令行上敲java AppMain。系统就会启动一个jvm进程,jvm进程从classpath路径中找到一个名为AppMain.class的二进制文件,将MainApp的类信息加载到运行时数据区的方法区内,这个过程叫做MainApp类的加载。
然后JVM找到AppMain的主函数入口,开始执行main函数。
main函数的第一条命令是Animal animal = new Animal("Puppy");就是让JVM创建一个Animal对象,但是这时候方法区中没有Animal类的信息,所以JVM马上加载Animal类,把Animal类的类型信息放到方法区中。
加载完Animal类之后,Java虚拟机做的第一件事情就是在堆区中为一个新的Animal实例分配内存, 然后调用构造函数初始化Animal实例,这个Animal实例持有着指向方法区的Animal类的类型信息(其中包含有方法表,java动态绑定的底层实现)的引用。
当使用animal.printName()的时候,JVM根据animal引用找到Animal对象,然后根据Animal对象持有的引用定位到方法区中Animal类的类型信息的方法表,获得printName()函数的字节码的地址。
开始运行printName()函数。
特别说明:java类中所有public和protected的实例方法都采用动态绑定机制,所有私有方法、静态方法、构造器及初始化方法<clinit>都是采用静态绑定机制。而使用动态绑定机制的时候会用到方法表,静态绑定时并不会用到。

热心网友 时间:2023-01-20 15:31

1.你是否正确配置了JDK(如果没有去网上搜,多着呢)
2.正确配置JDK后编写以下程序
class Test{ //此行为创建类,class为关键字,Test为类名称
public static void main(String[] args){//此行为类的入口
System.out.println("测试成功!");//此行进行输出
}
}
然后再C盘根目录另存为一个名字必须为Test.java的文件
3.点击开始-->运行,输入“CMD”点击ENTER进入
到C盘根目录下(如果是C:\Documents and Settings\Administrator>)的话直接输入“cd\”到根目录,然后输入 javac Test.java (这个是编译过程),编译完成之后DOS窗口不要关,输入 java Test 执行出现“测试成功!”就OK了

注释
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 如何运行JAVA? 珍珠粉牛奶蜂蜜黄瓜做面膜有什么效果 黄瓜片和牛奶加蜂蜜做面膜效果怎么样 黄瓜水和蜂蜜做面膜有什么好处 黄瓜和蜂蜜还有牛奶做面膜好不好? 黄瓜白醋牛奶蜂蜜能不能做面膜 黄瓜,牛奶,蜂蜜,蛋清面膜的功效 黄瓜片加牛奶能敷在脸上吗? 研究生学位英语考试难不难呀 蜂蜜能和黄瓜片一起做面膜吗 研究生学位英语考试难吗? 黄瓜可以和牛奶一起做面膜吗?拜托各位大神 研究生学位英语难吗?我很担心考不过,要复习到什么程度才能过呢? 硕士研究生学位英语好过吗 牛奶黄瓜蜂蜜放在一起做面膜好吗 学位英语不过,对上研究生有什么影响吗 用黄瓜敷脸加牛奶可以敷脸吗 我是中国医科大学研究生学位英语没过听说不能毕业了是真的吗怎么办啊 蜂蜜牛奶黄瓜怎么做面膜 研究生是不是一定要过英语6级才能毕业呀?谁能告诉我,谢谢! 72段的魔尺变各种东西 至少要5种 带教程 最好有视频和步骤 java文件怎么运行 java 怎么运行 求助,在淘宝卖视频教程需要放置哪个类目? 怎么运行java文件 java程序要如何运行? 记事本写java代码怎么运行 java 编程中怎么运行? 音乐的基础理论是什么? 怎么运行java软件 JAVA怎么运行啊 一个单独的java文件用eclipse怎么运行?如Welcome.java文件如何运行 音乐学与音乐理论的区别 短视频里物品逐件摆放的效果怎么做 音乐理论知识有哪些? 扭扭滑板的教程视频 请问什么是乐理? 乐理知识概括的说是什么 什么是基本乐理 乐理考试具体内容是什么?