----石文海
初级部分试卷 A
一、简答题:每题3分
1、描述一下JVM加载class文件的原理机制?
答:Java虚拟机的类加载器将.class文件加载进来,创建运行时系统,然后由校验器进行校验,再由解释器对.class文件逐行解释并执行。
---》Jvm在执行一个字节码程序时,首先通过类加载器加载运行一个所需的全部代码(本类和被本类调用或者使用的其他字节码程序),然后通过字节码校验器对字节码文件进行数据类型转换和栈溢出错误检查,最后通过解释器将字节码程序解释成机器码。然后在特定的硬件平台和操作系统平台上运行。
àClassLoader
2、char型变量中能不能存贮一个中文汉字?为什么?
答:能。在JAVA中,char型变量是采用unicode编码,unicode字符包含中文汉字。
3、简述逻辑操作(&,|)与条件操作(&&,||)的区别。
---》前者既可以对数值操作,也可以对boolean值操作;属于非短路运算符。
后者只能操作boolean值;属于短路运算符。
答:前者是非短路运算符,即运算符两端都必须执行;运算时,先将运算符两端转化为二进制后进行运算。
后者是短路运算符,有时只需执行左端即可结束运算。
4、在JAVA中,如何跳出当前的多重嵌套循环?
使用控制语句,控制循环的变量范围或者在循环体内部加上限制条件
àbreak,continue,return.
5、编程题: 用最有效率的方法算出2乘以8等於几?
--》移位运算符。2<<3或8<<1.
public class Test {
public static void main(String[] args) {
System.out.println(2*8);
}
}
6、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?为什么?
答:是引用传递,因为方法参数传递的是对象,而对象属于引用类型。
在java中无论传递的是基本类型数据还是引用数据类型数据,都是传递变量所指向的内存中的真实的数据值。在被调用方法中即使可以改变所传递的对象的值,但无法改变该变量的引用。
--》在JAVA中,只有值传递
7、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:能作用在byte和long上,因为它们都属于整型,不能作用在String上。
---》Switch语句采用的数据类型是byte、short、int、char。其他数据类型不能使用。
---》long不行,精度问题。
8、数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有,String有。
9、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:前者s1是short类型,s1 + 1做完运算后默认为int型,int型转化为short型需要加上强制转化运算符,因为s1 = short(s1 + 1);
后者一样的错误,应为s1+=short(1);