1.安装JDK后,需要配置的三个环境变量分别是什么?以及每个环境变量代表的含义是什么?
参考答案: JAVA_HOME JDK安装路径
PATH JDK中bin目录所在路径
CLASSPATH 当前要执行的java类(class文件)所在路径
2.执行一个普通java类(有主函数)时,一般会涉及到哪些类加载器?
CLASSPATH和哪一个类加载器有关 系?什么关系?
参考答案: 启动类加载器 扩展类加载器 应用类加载器
CLASSPATH和应用类加载器有关系 应用类加载器会通过CLASSPATH中配置的路径,来查找当前需要执行的java代码所存在的class文件
3.类加载器加载了字节码文件之后,会对该文件做字节码校验,请列出几条校验的方面(至少三条)
参考答案: 字节码版本和JVM是否兼容
代码不能破坏系统的完整性
运行时堆栈没有溢出
参数类型是否正确
类型转换是否正确
变量要在使用之前进行初始化
方法调用与对象引用类型间要匹配
4.假设现在我们登录unix服务器后所处的位置在/home/tom /home/tom目录下有俩个子目录: /home/tom/src /home/tom/bin 我们在当前/home/tom下使用vi命令分别编写俩个java源文件 vi src/Student.java (com.briup包下) vi src/StudentTest.java (com.briup包下) StudentTest.java中有主函数,其中调用到了Student类中的方法 编译这俩个类,并且运行StudentTest类 请写出编译运行的命令? 要求:这俩个类要一个一个编译,并且编译好的东西放到bin下面。执行所有命令的时候,我们所在的路径 都是/home/tom
参考答案:
javac -d bin src/Student.java
javac -d bin -cp bin src/StudentTest.java
java -cp bin com.briup.StudentTest
5.java中的三种注释分别是什么?
把class文件反编译后是否可以获取代码中的注释?
参考答案: 单行注释 //
多行注释 /* */
文档注释 /** */
不能
6.int类型能表示整数的最小值和最大值分别是多少?可以用次方数来表示
参考答案: -2的31次方
2的31次方减1
7.观察以下代码 char c1 = '\u0000'; char c2 = 0; char c3 = 00; char c4 = ' ';//单引号中有一个空格 c1分别和c2、c3、c4比较是否相等(返回ture或false)?
参考答案: c1==c2 为true相等
c1==c3 为true相等
c1==c4 为false不相等
8.java中整型默认类型是int,浮点型默认类型是double,那么以下俩句代码会不会编译出错?为什么? byte b = 1;
float f = 10.5;
参考答案 编译会出错,因为10.5默认是double类型的,double类型是双精度的浮点数,float是单精度的浮点数,双精度 的数字如果用单精度的变量接收有可能会丢失精度的。
9.有以下代码 int a = 15; int b = 3; 把变量a和变量b的值进行交换,并且要求不能使用第三个变量。 (至少写出俩种方案)
参考答案:
a = a+b;
b = a-b;
a = a-b;
--------
a = a^b;
b = a^b;
a = a^b;
--------
a = a*b;
b = a/b;
a = a/b;
10.有以下代码 obj instanceof Student 请说明该代码的含义?注意引用和对象的描述
参考答案: 在运行时,引用obj所指向对象的实际类型,是不是Student类型或者Student的子类型,注意是obj所指 向的对象类型,而不是obj的类型
11.有以下代码 byte a = 1;//代码1 a+=1; //代码2 a=a+1; //代码3 System.out.println(a);//代码4 代码编译运行后的结果是什么?
参考答案: 编译报错,代码3编译不通过
12.以下代码输出结果是多少?
System.out.println(32336>>4);
参考答案: 2021 (32336/16=2021)
13.有以下代码 如何让break语句可以跳出外层循环(变量i所在的循环)?用代码举例说明(代码不需要写全,能明确表 达出即可)
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if(j == 1){
break;
}
}
}
参考答案:
lableA:for(int i=0;i<10;i++){
lableB:for(int j=0;j<10;j++){
if(j == 1){
break lableA;
}
}
}
14.java中的数组对象和java.util.Arrays类是什么关系?
参考答案 java.util.Arrays类是数组的辅助类,该类中有很多静态方法可以用来操作数组对象,例如给数组元素排序、 查找数组中某个元素的下标等等
15.有以下代码
int[] a = new int[2]; //代码1
int[] b = new int[2]{100,101}; //代码2
int[] c = {100,101}; //代码3
int[] d; //代码4
d = {100,101}; //代码5
int[] e; //代码6
e = new int[]{100,101}; //代码7
列出你认为编译会报错的代码
参考答案 代码2和代码5这俩处会编译报错
16.假设有一个数组对象arr,如何获取该数组的长度?使用该数组对象可以调用到哪些方法?
参考答案 int len = arr.length;
数组对象arr只能调用到从Object中继承过来的方法,数组对象本身并没有其他方法