Java基础考题(上)

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中继承过来的方法,数组对象本身并没有其他方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值