JavaSE-基础练习题

前言

部分练习题摘录自:Sun-Java程序员认证考试题库

部分练习题加入了自己的解析

若对JavaSE某些知识点不熟悉,可以看下我有关JavaSE知识点总结的文章

还未整理完,待更

若有错误或补充,欢迎私信

一、Java入门

  1. 下列哪项不是JDK所包含的内容?(选一项)C

    A. Java编程语言
    B. 工具及工具的API
    C. Java EE扩展API
    D. Java平台虚拟机
    
  2. 下列关于JDK、JRE和JVM的描述。哪项正确?D

    A. JDK中包含了JRE,JVM中包含了JRE
    B. JRE中包含了JDK,JDK中包含了JVM
    C. JRE中包含了JDK,JVM中包含了JRE
    D. JDK中包含了JRE,JRE中包含了JVM
    
  3. 下列哪个工具可以编译java源文件?A

    A. javac
    B. jdb
    C. javadoc
    D. junit
    
  4. JDK工具javadoc的作用是哪项?A

    A. 生成Java文档
    B. 编译Java源文件
    C. 执行Java类文件
    D. 测试Java代码
    
  5. 以下哪些包是Java标准库中常用的包?(选三项)ACD

    A. java.lang
    B. javax.servlet.http
    C. java.io
    D. java.sql
    
  6. 使用JDK工具生成的Java文档的文件格式是?D

    A. XML格式
    B. 自定义格式
    C. 二进制格式
    D. HTML格式
    
  7. 以下关于JVM的叙述,哪项正确?(选两项)AC

    A. JVM运行于操作系统之上,它依赖于操作系统
    B. JVM运行于操作系统之上,它与操作系统无关
    C. JVM支持Java程序运行,它能够直接运行Java字节码文件
    D. JVM支持Java程序运行,它能够直接运行Java源代码文件
    
    注:Java跨平台,但每一种操作系统都有自己对应的JVM
    
  8. 以下关于支持Java运行平台的叙述,哪项错误?C

    A. Java可在Solaris平台上运行
    B. Java可在Windows平台上运行
    C. Java语言与平台无关。Java程序的运行结果依赖于操作系统
    D. Java语言与平台无关。Java程序的运行结果与操作系统无关
    
  9. 以下关于Applet和Java程序之间关系的叙述,哪项错误?B

    A. 一个Applet就是一段Java程序
    B. Applet是一种特殊的Java程序,它需要运行在Web服务器上
    C. Applet是一种特殊的Java程序,它需要运行在Web浏览器上
    D. Applet是一种Java SE平台的应用程序
    
  10. 以下关于Java HotSpot的描述,哪两项错误?(选两项)AD

    A. JavaHotSpot是一种热编译技术,在编译Java源程序时会被使用
    B. Java HotSpot是一种热编译技术,在运行Java代码时会被使用
    C. Java HotSpot是一种热编译技术,它只对程序的部分字节码进行优化
    D. Java HotSpot是一种热编译技术,它会对程序的全部字节码进行优化
    
  11. 环境变量PATH中含有多个路径时,路径和路径之间可以用哪项来隔开?A

    A. ;
    B. ,
    C. *
    D. |
    
  12. CLASSPATH中的"."的含义是哪项?B

    A. 省略号
    B. 当前目录
    C. 所有目录
    D. 上级目录
    
  13. JVM在执行一个Java类时,大致采用以下过程?D

    A. 执行类中的代码->装载类->校验类
    B. 校验类->装载类->执行类中的代码
    C. 装载类->执行类中的代码->校验类
    D. 装载类->校验类->执行类中的代码
    
    注:考察类加载
    
  14. 当运行个Java程序时,传递参数的格式是哪项?C

    A. java 类名 参数1, 参数2
    B. javac 类名 参数1 参数2
    C. java 类名 参数1 参数2
    D. java 类名 参数1 + 参数2
    
  15. 以下关于Java文件名的叙述,正确的有?(选两项)AB

    A. Java源文件的扩展名应为.java
    B. Java源文件的文件名应与文件中的类名一致
    C. Java字节码文件的扩展名应为.java
    D. 一个Java源文件中只能包含一个Java类
    

二、数据类型和运算符

  1. 下列哪项不属于Java语言的基本数据类型?B

    A. int
    B. String
    C. double
    D. boolean
    
  2. 下列哪项不是int类型的字面量?A

    A. \u03A6
    B. 077
    C. 0xABBC
    D. 20
    
  3. 下列哪项不是有效的标识符?B

    A. userName
    B. 2test
    C. $change
    D. _password
    
  4. 下列哪项是Java语言中所规定的注释样式?(选三项)ACD

    A. // 单行注释
    B. --单行注释
    C. /*
        * 单行或多行注释
        */
    D. /**
        * 文档注释
        */
    
  5. 下列哪项不是Java语言的关键字?B

    A. goto
    B. sizeof
    C. instanceof
    D. volatile
    
  6. 现有如下五个声明:哪行无法通过编译?D

    Line1: int a_really_really_really_long_variable_name = 5;
    Line2: int _hi = 6;
    Line3: int big = Integer.getInteger("7");
    Line4: int $dollars = 8;
    Line5: int %opercent = 9;
    
    A. Line1
    B. Line3
    C. Line4
    D. Line5
    
  7. 下面程序结果为:D

    class Top {
        static int x = 1;
    
        public Top(int y) {
            x *= 3;
        }
    }
    
    class Middle extends Top {
        // 由于父类有了有参构造就不会默认提供无参构造
        // 因此子类所有构造中需要显示调用父类有参构造
        public Middle() {
            x += 1;
        }
    
        public static void main(String[] args) {
            Middle m = new Middle();
            System.out.println(x);
        }
    }
    
    A. 1
    B. 2
    C. 3
    D. 编译失败
    
  8. 下面程序结果为:A

    class Passer f {
        static final int x = 5;
    
        public static void main(String[] args) {
            new Passer().go(x);
            // 打印的是成员变量x
            System.out.print(x);
        }
    
        void go(int x) {
            // 打印的是值传递过来的x
            System.out.print(x++);
        }
    }
    
    A. 55
    B. 56
    C. 65
    D. 66
    
  9. 下面程序结果为:B

    class Wrench {
        public static void main(String[] args) {
            Wrench w = new Wrench();
            Wrench w2 = new Wrench();
            // 返回w赋给w2
            w2 = go(w, w2);
            System.out.print(w2 == w);
        }
    
        static Wrench go(Wrench wrl, Wrench wr2) {
            Wrench wr3 = wrl;
            wrl = wr2;
            wr2 = wr3;
            // w3只赋值一次,值为wrl
            return wr3;
        }
    }
    
    A. false
    B. true
    C. 编译失败
    D. 运行的时候有异常抛出
    
  10. 下面程序结果为:A

    class Wrench2 {
        int size;
    
        public static void main(String[] args) {
            Wrench2 w = new Wrench2();
            w.size = 11;
            Wrench2 w2 = go(w, w.size);
            System.out.print(w2.size);
        }
    
        // s为值传递
        static Wrench2 go(Wrench2 wr, int s) {
            s = 12;
            return wr;
        }
    }
    
    A. 11
    B. 12
    C. 编译失败
    D. 运行的时候有异常抛出
    
  11. 下面程序哪一句是错误的?B

    class Test2 {
        public static void main(String[] args) {
            short a, b, c;
            a = 1;
            b = 2;
            // short + short在运算时会提升为int
            c = a + b;
            a += 2;
        }
    }
    
    A. a = 1;
    B. c = a + b;
    C. a += 2;
    D. short a, b, c;
    
  12. 表达式:1 - 2 / 5 + 2 * 5的结果是哪项?D

    A. 10.6
    B. 9.8
    C. 9
    D. 11
    
  13. sl的结果是哪项:A

    String s = "123";
    String sl = s + 456;
    
    A. 123456
    B. 579
    C. 编译错误
    D. 运行时抛出异常
    
  14. 基本数据类型float的包装类是哪项?C

    A. Integer
    B. Double
    C. Float
    D. Character
    
  15. 下面程序结果为:D

    class Test4 {
        public static void main(String[] args) {
            boolean x = true;
            boolean y = false;
            short z = 42;
            // true && true; y被赋值为true; 执行完方法体后z的值为44
            if ((z++ == 42) && (y = true)) z++;
            // false || true; z的值为46
            if ((x = false) || (++z == 45)) z++;
            System.out.println("z=" + z);
        }
    }
    
    A. z=42
    B. z=44
    C. z=45
    D. z=46
    

三、流程控制与数组

  1. 下面程序结果为:D

    class TestApp {
        public static void main(String[] args) {
            for (int i = 0; i < 10; i++) {
                if (i == 3)
                    break;
                System.out.print(i);
            }
        }
    }
    
    A. 0123
    B. 012456789
    C. 0123456789
    D. 012
    
  2. 下面程序结果为:B

    class TestApp {
        public static void main(String[] args) {
            int x = 6;
            if (x > 1)
                System.out.println("x>l");
            else if (x > 5)
                System.out.println("x>5");
            else if (x < 10)
                System.out.println("x<lO");
            else if (x < 29)
                System.out.println("x<29");
            else
                System.out.println("以上都不是");
        }
    }
    
    A. x>5
    B. x>1
    C. x<10
    D. x<29
    
  3. 下面程序结果为:C

    class TestApp {
        public static void main(String[] args) {
            int[] myarray = {10, 11, 12, 13, 14};
            int sum = 0;
            for (int x : myarray)
                sum += x;
            System.out.println("sum=" + sum);
        }
    }
    
    A. sum=10
    B. sum=70
    C. sum=60
    D. 运行时抛出异常
    
  4. 下列有关数组的声明中,正确的是哪项?(选两项)CD

    A. int s[ 10];
    B. int[10]s;
    C. int[] s = {1, 2, 3, 4, 5};
    D. int s[];
    
  5. 已知数组array,其最后一个元素的下标是?B

    A. array.size
    B. array.length - 1
    C. array.size - 1
    D. array.length
    
  6. 下面程序结果为:B

    class TestApp {
        public static void main(String[] args) {
            int x = 5;
            switch (x) {
                case 1:
                case 2:
                case 3:
                    System.out.println("一季度");
                    break;
                case 4:
                case 5:
                case 6:
                    System.out.println("二季度");
                    break;
                default:
                    System.out.println("三季度以上");
                    break;
            }
        }
    }
    
    A. 一季度
    B. 二季度
    C. 三季度以上
    D. 无输出
    
  7. 为将数组myArray的长度由3改为6,现采取以下编码:D

    int[] myArray = new int[3];
    // 改变了myArray的引用而已
    myArray = new int[6];
    
    A. 数组myArray的长度已由3改为6,其中前3个元素的值不变,后3个元素的值为空
    B. 数组myArray的长度已由3改为6,其中前3个元素的值不变,后3个元素需再经过初始化后才能使用
    C. 数组myArray的长度没有变化
    D. 数组myArray的长度已由3改为6,原来3个元素的值全部丢失
    
  8. 下面程序结果为:A

    class Ifs {
        public static void main(String[] args) {
            boolean state = false;
            int i = 2;
            // true && true; i = 4, state = true
            if ((++i > 2) && (state = true))
                i++;
            // true || false; i = 6
            if ((++i > 4) || (state = false))
                i++;
            System.out.println(i);
        }
    }
    
    A. 6
    B. 5
    C. 4
    D. 编译失败
    
  9. 下面程序结果为:C

    public class Tester {
        public static void main(String[] args) {
            int x = 5;
            Integer x1 = x;
            // 5在byte区间内,因此x2会使用x1的缓存,不会new,因此x2和x1为同一个对象
            Integer x2 = x;
            // Integer会自动拆箱成int
            int x3 = new Integer(5);
            // x, x1, x2, x3值均为5
    
            // Integer重写了equals
            System.out.print(x1.equals(x)); // true
            // Integer与int进行==比较时,Integer会拆箱成一个int
            System.out.print(x1 == x); // true
            System.out.print(x2.equals(x1)); // true
            System.out.print(x2 == x1); // true
            System.out.print(x2 == x3); // true
            System.out.print(x2.equals(x3)); // true
        }
    }
    
    A. 编译失败
    B. falsefalsetruetruetruetrue
    C. truetruetruetruetruetrue
    D. falsefalsetruetruetruefalse
    E. truefalsetruefalsefalsetrue
    F. 运行时异常被抛出
    
  10. 下面程序结果为:A

    class Rectangle {
        public stat
  • 12
    点赞
  • 115
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值