Java 是编译与解释共存的语言

学习java已有一段时间,但是还说摸不清java到底是编译型语言还说解释型语言,然后网上查阅整理之后得到自己对java的认识——Java 是一门编译与解释共存的语言。
首先了解编译与解释的定义:
编译型语言:将做好的源程序一次性编译成二进制代码的可运行程序,然后就可以直接运行这个程序。
解释型语言:将源程序翻译成机器能理解的语言,翻译一句执行一句,直到结束。
java 比较特殊,以上两种方式都有所涉及,所以比较难区分。
java从源代码到运行的流程如下。
在这里插入图片描述
java源程序首先要经过一次编译形成字节码文件.class,此字节码文件不面向特定机器,而是面向JVM虚拟机的,具体面向机器的过程交由JVM来完成,不同的操作系统有着不同版本的JVM,这些JVM并不相同,但是他们都能够识别相同的.class字节码文件,将字节码文件翻译成特定机器的二进制码来执行。所以java 的跨平台性就是java源程序编译成的.class文件,在任何操作系统上通过该系统对应的JVM都能够顺利执行,java跨平台不等于JVM跨平台,JVM是非跨平台的!
从java源程序到执行的过程可以看见,这个过程即有了编译步骤也有解释步骤。但是本质上来讲,编译的最终结果也只是.class文件,不是机器码,最终还是需要JVM来统一解释,所以更多的应该将java视为解释性语言。
由于解释性语言性能比较低,后来java引入了JIT编译,某些被频繁执行的方法或者代码块,会被JVM认定为“热点代码”。在运行时JVM会把这些热点代码编译成与本地平台相关的机器码,并且进行各种层次的优化,以提高执行效率。

6、Java源程序在转换为机器语言执行过程中既有编译也有解释。 ( ) 7、// 是java的多行注释符。 ( ) 面向对象 3.Java 仅支持类间的单重继承。 ( ) 17.方法可以没有返回值,或有一个返回值,也可以有多个返回值。( ) 5.一个类的定义包括定义类头和定义类体两个部分。( ) 7.类的私有属性和私有方法可以被其子类访问。( ) 13.子类不能继承父类的构造函数。( ) 14.重载的方法可以通过它们的返回值类型的不同来区分。( ) 16.在 Applet 的坐标系中,(0,0) 代表输出窗口左上角的象素点。( ) 18.构造函数的方法名可由编程人员任意命名。( ) 19.构造函数能继承,也能被重载。( ) 20.类的构造函数名必须和类名相同。( ) 1、Java中所有的类都是java.lang.Object类的直接或间接子类。 ( ) 5、只有抽象类或接口中才能包含抽象方法。 ( ) 9、两个类同在一个包中,那么在一个类可以访问另一个类的private成员变量。 ( ) 10、方法形式参数的作用域是该方法的方法体。 ( ) 8、两个类同在一个包中,那么在一个类可以访问另一个类的private成员变量。( ) 10、方法形式参数的作用域是该方法的方法体。 ( ) 1、String abc[ ];是合法的Java语句。 ( ) 2、在Java里,允许多重继承。 ( ) 3、在Java语言里,do-while语句是先执行循环体,然后再判断的循环条件。 ( ) 4、只有抽象类或接口中才能包含抽象方法。       ( ) 其他 8、StringBuffer类的对象包含的字符串不可以被修改。 ( ) 8.字符串 ”\’a\’” 的长度是5。( ) 9.Java 支持多线程机制。( ) 填空题 17.Java中的的字符使用( )编码unicode 18. 在Java语言中,将源代码翻译成____________时产生的错误称为编译错误,而将程序在运行中产生的错误称为运行错误。字节码 13. Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为哪两种具体类型,各占二进制的多少位? 16.字符串 ”\’a\’” 的长度是( )3 13. float 32位、double 64位 24.表达式2*5/2.5、1.0/2*5、1/2*3、5/3的计算结果分别是_________。 25.当整型变量n的值不能被13除尽时,其值为 false 的Java语言表达式是_______ 。 26.执行以下程序段后:x = ________, y = ________ 。 int x = 5, y=5; y = ++x * - -y; 29. 关系运算的运算结果应是( )类型 30. 逻辑运算的运算对象应是( )类型,运算结果应是( )类型 33.下面的语句是声明一个逻辑变量并赋值,请将它补充完整: ______ b1=5!=6; 逻辑变量b1的取值是______。 34.下面的语句是声明某类型变量s,并通过三目条件运算符的结果给变量s赋值,请将该语句补充完整,s的初值是什么? ______ s=(9999%2= =1) ? ”奇数” : ”偶数”; 24. 4.0; 2.5; 0; 1 25. (n%13= =0 26. 6 ;24 29. boolean型30. boolean型;boolean型 31. 略 33. boolean true 34. String ”奇数” 18.阅读下面的程序段,回答问题。 if ( x < 5 ) System.out.print(" one "); else { if ( y < 5 ) System.out.print(" two "); else System.out.println(" three "); } 问题: 1)若执行前 x=6, y=8,该程序段输出是什么? 2)若执行前 x=1, y=8,该程序段输出是什么? 18. 1)three 2)one 25.下面是一个java应用程序(Application),它的功能是在屏幕上输出26个小写英文字母,其中每个字母相隔一个制表符,请完成程序填空。 public _____ Class1 { public static void main( String args[] ) { char c='a'; for (int i=1;i<=26;i++) { System.out.print(______); } } } 26.下面是一个java应用程序(Application),它的功能是计算 s=1+2+3+...+10 ,请完成程序填空。 public _____ Class1 { public static void main( String args[] ) { int s=0; for (int i=1;i<=10;i++) { s+=______; } System.out.println("s="+s); } } 27.下面是一个java Application 的主类的定义,其功能是输出乘法口诀表第一列,请完成程序填空。 import java.io.*; public class MyClass { public static void main(String[] args) { int j=1; for(int i=1; _______; i++) { System.out.println(i+"*"+j+"="+_______); } } } 25. class (c++)+"\t" 26. class i 27. i<=9 j*i 1.结构化程序设计的三种基本流程控制结构是:_______、_______、________。 10.下面程序的功能是求2 到100 之间的素数,请将程序补充完整。 public class Class1 { public static void main( String args[] ) { Label1: for(int i=2;i<100;i++) { for(int j=2;j<i;j++) { if( i%j==_____) _________; } System.out.print(i+"\t"); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值