第一步(编译): 创建完源文件之后,程序会先被编译为.class文件。Java编译一个类时,如果这个类所依赖的类还没有被编译,编译器就会先编译这个被依赖的类,然后引用,否则直接引用,这个有点象make。
如果java编译器在指定目录下找不到该类所其依赖的类的.class文件或者.java源文件的话,编译器话报“cant find symbol”的错误。
第二步(运行):java类运行的过程大概可分为两个过程:1、类的加载 2、类的执行。需要说明的是:JVM主要在程序第一次主动使用类的时候,才会去加载该类。也就是说,JVM并不是在一开始就把一个程序就所有的类都加载到内存中,而是到不得不用的时候才把它加载进来,而且只加载一次。
特别说明:java类中所有public和protected的实例方法都采用动态绑定机制,所有私有方法、静态方法、构造器及初始化方法<clinit>都是采用静态绑定机制。而使用动态绑定机制的时候会用到方法表,静态绑定时并不会用到。
(1)月份编辑和程序编译扩展阅读:
Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程。
Java代码编译:是由Java源码编译器来完成;
Java字节码的执行:是由JVM执行引擎来完成
Java程序从源文件创建到程序运行要经过两大步骤:
1、源文件由编译器编译成字节码(ByteCode)
2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言( "semi-interpreted" language)。
㈡ 用C语言设计程序:输入年和月份值,输出对应月份的天数,谁能帮我看看对错,谢谢!
#include<stdio.h>
voidmain()
{
/*float*/intyear,month,days;/*不用浮点数*/
printf("inputyear,month=? ");
scanf("%d,%d",&year,&month);
switch(month)/*;*//*多了个分号*/
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:days=31;
break;
case4:
case6:
case9:
case11:days=30;
break;
case2:if((year%4==0)&&(year%100!=0)||(year%400==0))
days=/*28*/29;/*闰年才29天*/
else
days=/*29*/28;
break;
default:printf("monthiserror ");
}
printf("year=%d,month=%d,days=%d ",year,month,days);
}
㈢ 程序编辑与编译有什么区别
编辑和编译是完全不同的概念,,编辑 是指程序代码、界面等的输入、构建,编辑等,在这期间,开发工具会对输入的代码进行一般的语法检查等,,在可视化以前的开发环境下,主要是指代码的输入、编辑。编译是指 开发工具的编译程序对编辑过的代码进行转换,以便生成可以执行的代码文件,在可视化以前的开发环境下,编译都是在编辑工作完成以后进行的。
㈣ 程序语言中编译,解释,编辑的区别
首先说编辑,这个一般指的是编辑高级语言代码,也就人能够看懂的计算机语言,如JAVA,C,C#等等,总之就是人通过学习语法规则就能够理解其逻辑过程的语言都算高级语言。编辑就是指的编写这样的代码。
我们知道,计算机是无法读懂高级语言的,那么就需要编译器把高级语言转换成计算机可以运行的机器语言,就是一般的0101010001的二进制代码。
高级语言翻译为计算机能读懂的机器语言的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。程序执行之前,需要一个专门的编译过程(跟计算机语言的种类有关,比如C就是这样),把程序编译成为机器语言的文件,比如WINDIOWS系统下的exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件)。
解释则不同,这类语言写的程序不需要编译(比如php),省了这道工序,语言在运行程序的时候才翻译,比如解释性php语言,专门有一个解释器能够直接执行php程序,每个语句都是执行的时候才翻译,然后给计算机执行。
那么为什么要分为了两种呢,因为编译型语言一经编辑,其对系统的要求就定死了,比如平台,硬件类型等,已经编译为机器代码了,就只能在同类机器上运行。同时因为其只编译一次,执行时不需要编译,所以一般效率高。
解释型的就不同,由于语言是在执行时被翻译的,所以解释器能够根据当前的系统平台,硬件情况实时生成机器语言用于运行,所以,其从一个系统移植到另一个系统就很容易。但是一般的,因为他每次运行都要翻译,所以一般效率较低。
关于他们的效率不一定的,有一些的解释型的语言运行效率不比编译型的低,因为他实时的对语言进行优化,提升了运行效率,主要看解释器的性能有多强。
还有一点就是编译型语言适合大量的复制进行商业活动,因为一旦编译成机器语言,人就看不懂了。所以代码泄露的可能很低,而解释型的,复制时需要直接复制源代码(既高级语言)这样获得的人都能查看其源代码并通过编辑器修改,这样是不利于版权,技术的保护的。
大致上就是这样。
㈤ 程序编译和程序编辑的区别是什么
编辑和编译是完全不同的概念.
编辑 是指程序代码、界面等的输入、构建,编辑等,在这期间,开发工具会对输入的代码进行一般的语法检查等,,在可视化以前的开发环境下,主要是指代码的输入、编辑。
编译 是指开发工具的编译程序对编辑过的代码进行转换,以便生成可以执行的代码文件,在可视化以前的开发环境下,编译都是在编辑工作完成以后进行的。
㈥ C语言编程 从键盘输入一个年份和月份,输出该月有多少天(考虑闰年)
用switch选择的:
#include<stdio.h>
int main()
{
int y,m;
printf("请依次输入年,月:
");
scanf("%d,%d",&y,&m); //上机时注意打逗号,也可修改为其他格式
switch(m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:printf("这个月有31天
");break;
case 2 : if(y%4==0&&y%100!=0||y%400==0) //最基本的判断闰年的条件
printf("这个月有29天
");
else printf("这个月有28天
");break;
case 4:
case 6:
case 9 :
case 11:printf("这个月有30天
");break;
}
return 0;
}
用指针型列举的:
#include<stdio.h>
int a[]={31,28,31,30,31,30,31,31,30,31,30,31},*p1,*p2,*p3,i=1,k=0;
int main()
{
int p1,p2;
printf("请依次输入年·月:
");
scanf("%d%d",&p1,&p2);
if(p1%4==0&&p1%100!=0||p1%400==0)
a[1]=29;
if(p2>12)
printf("您的输入有误!
");
printf("这个月的天数为:%d
",a[p2-1]);
return 0;
}#include <stdio.h>
main()
{int a,b;
printf("请输入年份和月份:
");
scanf("%d%d",&a,&b);
if (a%4==0&&a%100!=0)
if(b==2)
printf("这个月有29天
");
else if (b==1||b==3||b==5||b==7||b==8||b==10||b==12)
printf("这个月有31天
");
else
printf("这个月有30天
");
else if(b==2)
printf("这个月有28天
");
else if (b==1||b==3||b==5||b==7||b==8||b==10||b==12)
printf("这个月有31天
");
else
printf("这个月有30天
");}
普通
#include <stdio.h>
main(){
int a,b;
printf("请输入年份和月份:
");
scanf("%d%d",&a,&b);
if (a%4==0&&a%100!=0)
if(b==2)
printf("这个月有29天
");
else if (b==1||b==3||b==5||b==7||b==8||b==10||b==12)
printf("这个月有31天
");
else
printf("这个月有30天
");
else if(b==2)
printf("这个月有28天
");
else if (b==1||b==3||b==5||b==7||b==8||b==10||b==12)
printf("这个月有31天
");
else
printf("这个月有30天
");}
(6)月份编辑和程序编译扩展阅读
switch 语句可以处理多分支选择问题,根据其中break 语句的使用方法,一般分三种情况。
在switch 语句的每个语句段中都使用break 语句,这是switch 语句的主要使用方法,一般形式为:
switch (表达式)
case 常量表达式1: 语句段1; break;
case 常量表达式2: 语句段2; break;
case常量表达式n: 语句段n; break;
case常量表达式n+1:语句段n+ 1; break;
default :
参考资料c语言网络经验
㈦ 用C语言编译程序:输入制定年月的月份天数
c语言忘记了,给你一个大概的思路
首先输入年份,scanf,然后判断是否闰年if
year/400,如果是闰年的话
下面接一个switch
,1,3,5,7,8,10
12输出31天,2,4,6,9,11是30天,2月28天
或者你用if语句写也可以。
编程尽量自己写,别人写出来虽然你能看懂,但是要你自己写还是写不出的。
㈧ 源程序,目标程序,可执行程序,程序编辑,名词解释
源程序
源程序,是指未经编译的,按照一定的程序设计语言规范书写的,人类可读的文本文件。通常由高级语言编写。源程序可以是以书籍或者磁带或者其他载体的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机可执行的程序。将人类可读的程序代码文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,由各种编译器来完成。一般用高级语言编写的程序称为“源程序”。
目标程序
目标程序,又称为“目的程序”,为源程序经编译可直接被计算机运行的机器码集合,在计算机文件上以.obj作扩展名----由语言处理程序(汇编程序,编译程序,解释程序)将源程序处理(汇编,编译,解释)成与之等价的由机器码构成的,计算机能够直接运行的程序,该程序叫目标程序。目标代码尽管已经是机器指令,但是还不能运行,因为目标程序还没有解决函数调用问题,需要将各个目标程序与库函数连接,才能形成完整的可执行程序。
可执行程序
可执行程序(executableprogram,EXEFile)是指一种可在操作系统存储空间中浮动定位的可执行程序。在MS-DOS和MS-WINDOWS下,此类文件扩展名为·exe。
WINDOWS操作系统中的二进制可执行文件,分两种:
一种后辍名为·com,另一种是·exe。
DOS规定,有重名的exe和com,运行时优先执行com文件。如果只有A.exe,就可以直接输入A,而不用输入全名。但如果有A.com和A.exe,输入A则优先执行A.com,要运行A.exe只能输入A.exe而不能输入A。一般用于DOS,在WINDOWS系统中的执行文件一般都是.exe文件。在MS-DOS中,用以标识可执行文件的文件扩展名。用户在提示行输入不带.exe扩展名的文件名后按Enter键或者点双击就能运行可执行程序。
程序编辑
程序编辑是指将完成一件工作所需要的步骤,也就是算法,用计算机所能识别的语言,按照一定的程序结构翻译出来,并可被计算机执行的编写代码的全过程.该程序编辑形式(能通过编译、链接生成最终程序(一般是可执行文件)的源代码文件。