前言
部分练习题摘录自:Sun-Java程序员认证考试题库
部分练习题加入了自己的解析
若对JavaSE某些知识点不熟悉,可以看下我有关JavaSE知识点总结的文章
还未整理完,待更
若有错误或补充,欢迎私信
一、Java入门
-
下列哪项不是JDK所包含的内容?(选一项)C
A. Java编程语言 B. 工具及工具的API C. Java EE扩展API D. Java平台虚拟机
-
下列关于JDK、JRE和JVM的描述。哪项正确?D
A. JDK中包含了JRE,JVM中包含了JRE B. JRE中包含了JDK,JDK中包含了JVM C. JRE中包含了JDK,JVM中包含了JRE D. JDK中包含了JRE,JRE中包含了JVM
-
下列哪个工具可以编译java源文件?A
A. javac B. jdb C. javadoc D. junit
-
JDK工具javadoc的作用是哪项?A
A. 生成Java文档 B. 编译Java源文件 C. 执行Java类文件 D. 测试Java代码
-
以下哪些包是Java标准库中常用的包?(选三项)ACD
A. java.lang B. javax.servlet.http C. java.io D. java.sql
-
使用JDK工具生成的Java文档的文件格式是?D
A. XML格式 B. 自定义格式 C. 二进制格式 D. HTML格式
-
以下关于JVM的叙述,哪项正确?(选两项)AC
A. JVM运行于操作系统之上,它依赖于操作系统 B. JVM运行于操作系统之上,它与操作系统无关 C. JVM支持Java程序运行,它能够直接运行Java字节码文件 D. JVM支持Java程序运行,它能够直接运行Java源代码文件 注:Java跨平台,但每一种操作系统都有自己对应的JVM
-
以下关于支持Java运行平台的叙述,哪项错误?C
A. Java可在Solaris平台上运行 B. Java可在Windows平台上运行 C. Java语言与平台无关。Java程序的运行结果依赖于操作系统 D. Java语言与平台无关。Java程序的运行结果与操作系统无关
-
以下关于Applet和Java程序之间关系的叙述,哪项错误?B
A. 一个Applet就是一段Java程序 B. Applet是一种特殊的Java程序,它需要运行在Web服务器上 C. Applet是一种特殊的Java程序,它需要运行在Web浏览器上 D. Applet是一种Java SE平台的应用程序
-
以下关于Java HotSpot的描述,哪两项错误?(选两项)AD
A. JavaHotSpot是一种热编译技术,在编译Java源程序时会被使用 B. Java HotSpot是一种热编译技术,在运行Java代码时会被使用 C. Java HotSpot是一种热编译技术,它只对程序的部分字节码进行优化 D. Java HotSpot是一种热编译技术,它会对程序的全部字节码进行优化
-
环境变量PATH中含有多个路径时,路径和路径之间可以用哪项来隔开?A
A. ; B. , C. * D. |
-
CLASSPATH中的"."的含义是哪项?B
A. 省略号 B. 当前目录 C. 所有目录 D. 上级目录
-
JVM在执行一个Java类时,大致采用以下过程?D
A. 执行类中的代码->装载类->校验类 B. 校验类->装载类->执行类中的代码 C. 装载类->执行类中的代码->校验类 D. 装载类->校验类->执行类中的代码 注:考察类加载
-
当运行个Java程序时,传递参数的格式是哪项?C
A. java 类名 参数1, 参数2 B. javac 类名 参数1 参数2 C. java 类名 参数1 参数2 D. java 类名 参数1 + 参数2
-
以下关于Java文件名的叙述,正确的有?(选两项)AB
A. Java源文件的扩展名应为.java B. Java源文件的文件名应与文件中的类名一致 C. Java字节码文件的扩展名应为.java D. 一个Java源文件中只能包含一个Java类
二、数据类型和运算符
-
下列哪项不属于Java语言的基本数据类型?B
A. int B. String C. double D. boolean
-
下列哪项不是int类型的字面量?A
A. \u03A6 B. 077 C. 0xABBC D. 20
-
下列哪项不是有效的标识符?B
A. userName B. 2test C. $change D. _password
-
下列哪项是Java语言中所规定的注释样式?(选三项)ACD
A. // 单行注释 B. --单行注释 C. /* * 单行或多行注释 */ D. /** * 文档注释 */
-
下列哪项不是Java语言的关键字?B
A. goto B. sizeof C. instanceof D. volatile
-
现有如下五个声明:哪行无法通过编译?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
-
下面程序结果为: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. 编译失败
-
下面程序结果为: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
-
下面程序结果为: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. 运行的时候有异常抛出
-
下面程序结果为: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. 运行的时候有异常抛出
-
下面程序哪一句是错误的?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;
-
表达式:1 - 2 / 5 + 2 * 5的结果是哪项?D
A. 10.6 B. 9.8 C. 9 D. 11
-
sl的结果是哪项:A
String s = "123"; String sl = s + 456; A. 123456 B. 579 C. 编译错误 D. 运行时抛出异常
-
基本数据类型float的包装类是哪项?C
A. Integer B. Double C. Float D. Character
-
下面程序结果为: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
三、流程控制与数组
-
下面程序结果为: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
-
下面程序结果为: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
-
下面程序结果为: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. 运行时抛出异常
-
下列有关数组的声明中,正确的是哪项?(选两项)CD
A. int s[ 10]; B. int[10]s; C. int[] s = {1, 2, 3, 4, 5}; D. int s[];
-
已知数组array,其最后一个元素的下标是?B
A. array.size B. array.length - 1 C. array.size - 1 D. array.length
-
下面程序结果为: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. 无输出
-
为将数组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个元素的值全部丢失
-
下面程序结果为: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. 编译失败
-
下面程序结果为: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. 运行时异常被抛出
-
下面程序结果为:A
class Rectangle { public static void main(String[] args) { int[] x = {1, 2, 3}; // 2 > 1因此x[1]值为x[2]=3 x[1] = (x[1] > 1) ? x[2] : 0; System.out.println(x[1]); } } A. 3 B. 2 C. 1 D. 0
-
下面程序结果为:C
class Output { public static void main(String[] args) { int i = 5; System.out.print("4" + i + ""); System.out.print(i + 5 + "7"); System.out.println(i + "8"); } } A. 9 9722 B. 9 55758 C. 45 10758 D. 45 9722
-
以下哪种初始化数组的方式是错误的?C
A. String[] names = {"zhang", "wang", "li"}