java的源程序怎么进行编译

java的源程序怎么进行编译,第1张

public class HelloWorld {

public static void main(String[ ] args){

System.out.println("Hello World")

}

}

把上面代码复制下来,保存成文件,放当前目录下,命名为HelloWorld.java

安装JDK后,配置path=c:\program files\java\jdk1.6_0_23\bin (这里是举例,你的jdk安装目录可能在别的地方,注意后面有\bin)

classpath=.

然后,运行cmd打开命令行,进入保存HelloWorld.java的目录

编译命令:javac HelloWorld.java

运行命令:java HelloWorld

注意,严格区分大小写。

通常编程错误分为如下几种类型:

(1)、程序源代码中的语法错误。这类错误是最容易检查出来的。例如:在 C 语言中没有定义某个变量就使用该变量。源程序举例如下:

void main( )

{

int n1 = 50 /* 定义了一个整型变量 n1,并赋初值为 50 */

printf("n1 = %d\tn2=%d\n", n1, n2) /* 输出变量 n1、n2 的值 */

}

由于在使用 printf 语句之前并没有定义 n2 变量,故该程序在使用编译器对源程序进行编译时会出现语法错误。

(2)、程序源代码中的警告错误。这类错误就不像(1)中那样容易检查出来。通常的情况有:数组越界、或者是虽然定义了某个变量,但是未对其进行初始化就引用它,等等。这些都会引起程序莫名其妙的错误。而这些错误会加大程序的调试难度。源程序举例如下:

程序一、数组越界问题的举例

void main( )

{

int a[100] /* 定义一个数组元素个数为 100 的整型数组 a,正确的下标范围是:a[0] - a[99] */

a[100] = 500 /* 对数组下标元素 a[100] 进行赋值为 500,该错误就属于数组越界错误 */

}

程序二、虽然定义了某个变量,但是未对其进行初始化就引用它的举例

void main( )

{

int i, sum

for( i = 0 i <= 100 i ++ )

sum += i

}

该程序的功能是:将变量 i 的值从 0 到 100 之间进行循环,求累加和,并将结果保存在变量 sum 中。由于变量 sum 在进入 for 循环之前并未将其清零(sum = 0),故该程序会随着 C 语言的编译器的不同、以及计算机 *** 作系统的不同(Windows、或者是 Linux),而导致该程序的运行结果也是随机的。

程序一、以及程序二的错误就是属于警告错误。C 语言编译器在对这类程序进行编译时,并不检查该程序中是否有数组越界现象、或者是虽然定义了某个变量,但是未对其进行初始化就进行引用的检查。这类错误,用户就比较难于调试。

至于说到底需要多长时间才能够将自己编写的源程序全部调试通过,这个因人而异。编程经验丰富的人员花费的时间就会短一些。反之,调试程序所花费的时间就会长一些。

编译程序和解释程序2006年10月16日

星期一

14:26如果一个程序能够把某一种语言程序(称为源语言程序)改造成为另一种语言程序(称为目标语言程序),则这亲戚的程序称为“翻译程序”。如果源语言是“高级语言”(诸如FORTRAN、PASCAL等等),而目标语言是“低级语言”(如汇编语言或机器语言),则这样的翻译程序称为“编译程序”。

现在的计算机尚不能直接执行高级语言程序。执行一个高级语言程序大体上要分两步:第一步,把高级语言的源程序编译成低级语言的目标程序;第二步,运行这个目标程序。编译程序的典型工作过程是:输入源程序,对它进行加工处理,输出目标程序。加工处理是非常复杂的过程,它又可划分成以下几个阶段:源程序→词法分析→语法分析→产生中间代码→优化→目标代码生成→目标程序。

第一阶段是词法分析。承担词法分析任务的程序称为“扫描器”。词法分析的任务是:对构成源程序的字符串进行扫描和分解。第二阶段是语法分析。承担语法分析任务的程序称为“分析器”。语法分析的任务是:根据语法规则,把描扫器所提供的结果分析成各类语法范畴。第三阶段是产生中间代码。承担产生中间代码任务的程序称为“中间代码产生器”。其任务是:按照语法分析器所识别出的语法范畴,产生相应的中间指令。第四阶段是优化,即代码优化。优化的任务是对前阶段产生的中间代码进行加工变换,以便使生成的目标程序,能运行得更快更省(省内存)。第五阶段是目标代码生成。这一阶段的任务是:按照优化后的中间代码和其它有关信息生成目标程序。这种目标程序可以在计算机上直接执行。执行这个目标程序,就可得到一个高级语言程序的结果。

我们知道,所谓翻译程序是这样一种程序,它能够把用甲语言写的程序翻译成与之等价的用乙语言写的程序。这里的甲语言是该翻译程序的源语言,而乙语言则为该翻译程序的目标语言。对于编译程序而言,源程序是被加工的对象,而目标程序是加工后的结果。

在计算机上执行用某种高级语言写的源程序,通常有两种方式:一是编译执行方式,二是解释执行方式。

采用编译执行方式执行源程序时要分两大步:编译和运行。编译中的加工处理过程又可分为五个阶段。

解释执行方式与编译执行方式是不同的,其根本区别在于:编译方式把源程序的执行过程严格地分成两大步:编译和运行。即先把源程序全部翻译成目标代码,然后再运行此目标代码,获执行结果。解释方式则不然。它是按照源程序中语句的动态顺序,直接地逐句进行分析解释,并立即执行。所以,解释程序是这样一种程序,它能够按照源程序中语句的动态顺序,逐句地分析解释并执行,直至源程序结束。

与编译程序一样,解释程序也与源语言及计算机有关。同一台计算机上不同语言的解释程序是不同的;同一种语言在不同的计算机上的解释程序也可能不同。同一种高级语言的源程序,它可以采用解释执行方式,也可以采用编译执行方式。例如,BASIC语言有解释BASIC和编译BASIC之分。前者执行速度慢;后者执行速度快。编译程序和解释程序都属于系统程序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8081981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存