技术笔试面试题(上)

前言
当天社会,随着程序设计、软件开发等工作岗位的增加,java程序开发已经占据程序员求职市场的半壁江山,java程序员求职者们迫切需要自己的笔试面试题集。该书的目的就是帮助更多的有面试需求的java程序员顺利的通过笔试、面试。
本书涵盖了java面试中出现的各个知识点,包括java语言基础、数据库、web编程、框架等。其中每个部分都按小知识点进行笔试面试题整理,每道题都取材于各大公司的实际招聘面试题,并在题后紧跟详细的分析步骤和解答。

目录
前言 2
第一部分:JAVA基础 4
1.1 JAVA语言基础 4
1.2 JAVA面向对象 25
1.3 JAVA核心API-STRING、正则表达式、OBJECT、包装类、日期操作等 63
1.4 JAVA核心API-集合操作 81
1.5 JAVA核心API-IO操作 99
1.6 JAVA核心API-异常处理 100
1.7 JAVA核心API-多线程 104
1.8 JAVA核心API-网络通信 121
1.9 JAVA核心API-XML 129
1.10 SWING编程 129
1.10 设计模式 130
第二部分:数据库、JDBC、PLSQL 133
2.1 数据库 133
2.2 PLSQL 198
2.3 JDBC 216
第三部分 JACA WEB------------------------------------------------------------------------------------------ 223
3.1 WEB基础------------------------------------------------------------------ 223
3.2 SERVLET与JSP------------------------------------------------------------- 229
3.3 AJAX与JQUERY------------------------------------------------------------ 252
3.4 WEB应用------------------------------------------------------------------ 252
第四部分 流行框架
4.1 STRUTS2------------------------------------------------------------------ 261
4.2 HIBERNATE---------------------------------------------------------------- 268
4.3 MYBATIS------------------------------------------------------------------ 275
4.4 SPRING------------------------------------------------------------------- 279
4.5 框架整合----------------------------------------------------------------- 295
4.6 其他框架---------------------------------------------------------------- 303
第一部分:JAVA基础
1.1 JAVA语言基础
【题目编号】 jsd-01-101-1001
【知 识 点】 JAVA基础-JAVA语言基础-运算符-三目运算符
【难易程度】 50
【题目描述】
编译运行以下程序后,关于输出结果的说明正确的是 ( ):
public class Conditional{
public static void main(String args[ ]){
int x=4;
System.out.println(“value is “+ ((x>4) ? 99.9 :9));
}
}
【选项】
A. 输出结果为:value is 99.99
B. 输出结果为:value is 9
C. 输出结果为:value is 9.0
D. 编译错误
【正确答案】 C
【解释】
三目运算符中:第二个表达式和第三个表达式中如果都为基本数据类型,整个表达式的运算结果由容量高的决定。99.9 是 double 类型而9是 int 类型,double 容量高。

【题目编号】 jsd-01-101-1002
【知 识 点】 JAVA基础-JAVA语言基础-运算符和表达式-转义字符
【难易程度】 80
【题目描述】
在字符串前面加上( )符号,则字符串中的转义字符将不被处理。
【选项】
A. @ B. \ C.# D.%
【正确答案】 B
【解释】

【题目编号】 jsd-01-101-1003
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-while
【难易程度】 50
【题目描述】
下列代码哪行会出错:

  1. public void modify() {
  2. int I, j, k;
  3. I = 100;
  4. while ( I > 0 ) {
  5.  j = I * 2;
    
  6.  System.out.println (" The value of j is " + j );
    
  7.  k = k + 1;
    
  8.  I--;
    
  9. }
  10. }
    【选项】
    A. 4
    B. 6
    C. 7
    D. 8
    【正确答案】 C
    【解释】
    k 没有初始化就使用了

【题目编号】 jsd-01-101-1004
【知 识 点】 JAVA基础-JAVA语言基础-排序-插入排序
【难易程度】 70
【题目描述】
对记录序列{314,298,508,123,486,145}按从小到大的顺序进行插入排序,经过两趟排序后的结果为:
【选项】
A. {314,298,508,123,145,486}
B. {298,314,508,123,486,145}
C. {298,123,314,508,486,145}
D. 123、298,314,508,486,145}
【正确答案】 B
【解释】
插入排序算法:

public static void injectionSort(int[] number) {
// 第一个元素作为一部分,对后面的部分进行循环
	for (int j = 1; j < number.length; j++) {
		int tmp = number[j];
		int i = j - 1;
		while (tmp < number[i]) { number[i + 1] = number[i]; i--;
			if (i == -1)
			break;
		}
		number[i + 1] = tmp;
    }
}

【题目编号】 jsd-01-101-1005
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 30
【题目描述】
What is the numerical range of a char?
【选项】
A. 0 … 32767
B. 0 … 65535
C. –256 … 255
D. –32768 … 32767
E. Range is platform dependent.
【正确答案】 B
【解释】
在 Java 中,char 是一个无符号 16 位类型,取值范围为 0 到 65535。

【题目编号】 jsd-01-101-1006
【知 识 点】 JAVA基础-JAVA语言基础-关键字
【难易程度】 50
【题目描述】
Given:
public class Test {
public static void main(String[] args) {
String str = NULL; System.out.println(str);
}
}
What is the result? A. NULL
【选项】
B. Compilation fails.
C. The code runs with no output.
D. An exception is thrown at runtime.
【正确答案】 B
【解释】
null 应该小写

【题目编号】 jsd-01-101-1007
【知 识 点】 JAVA基础-JAVA语言基础-普通数组
【难易程度】 40
【题目描述】
Given:
public class Test {
public static void main (String[]args) {
String foo = args[1];
String bar = args[2];
String baz = args[3];
System.out.println(“baz = ” + baz);
}
}
And the output: Baz = 2
Which command line invocation will produce the output?
【选项】
A. java Test 2222
B. java Test 1 2 3 4
C. java Test 4 2 4 2
D. java Test 4 3 2 1
【正确答案】 C
【解释】
数组下标从 0 开始

【题目编号】 jsd-01-101-1008
【知 识 点】 JAVA基础-JAVA语言基础-分支结构-switch
【难易程度】 50
【题目描述】
Exhibit:
public class SwitchTest {
public static void main (String []args) {
System.out.println (“value =” +switchIt(4));
}
public static int switchIt(int x) {
int j = 1;
switch (x) {
case 1: j++;
case 2: j++; case 3: j++; case 4: j++; case 5: j++; default:j++;
}
return j + x;
}
}
What is the output from line 3?
【选项】
A. Value =3
B. Value =4
C. Value =5
D. Value =6
E. Value =7
F. Value =8
【正确答案】 F
【解释】
由于 case 块没有 break 语句,那么从 case 4:向下的代码都会执行。

【题目编号】 jsd-01-101-1009
【知 识 点】 JAVA基础-JAVA语言基础-关键字
【难易程度】 40
【题目描述】
下面关于 import, class 和 package 的声明顺序哪个正确?( )
【选项】
A. package, import, class
B. class, import, package
C. import, package, class
D. package, class, import
【正确答案】 A
【解释】

【题目编号】 jsd-01-101-1010
【知 识 点】 JAVA基础-JAVA语言基础-进制
【难易程度】 60
【题目描述】
题目:

  1. public class test (
  2. public static void main (String args[]) {
  3. int i = 0xFFFFFFF1;
  4. int j = ~i;
  5. }
  6. )
    程序运行到第 5 行时,j 的值为多少?( )
    【选项】
    A. –15
    B. 0
    C. 1
    D. 14
    E. 在第三行的错误导致编译失败
    【正确答案】 D
    【解释】
    int i = 0xFFFFFFF1;相当于 int i=-15 然后对 i 进行取反即取绝对值再减一

【题目编号】 jsd-01-101-1011
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-for
【难易程度】 40
【题目描述】
选择下面代码的运行结果:()。
public class Test{
public void method(){
for(int i = 0; i < 3; i++){
System.out.print(i);
}
System.out.print(i);
}
}
【选项】
A.0122 B.0123
C.编译错误 D.没有任何输出
【正确答案】 C
【解释】
i 变量的作用范围是整个 for 循环。

【题目编号】 jsd-01-101-1012
【知 识 点】 JAVA基础-JAVA语言基础-普通数组
【难易程度】 30
【题目描述】
已知表达式 int m [ ] = {0,1,2,3,4,5,6}; 下面哪个表达式的值与数组下标量总数相等?( )
【选项】
A .m.length() B.m.length C.m.length()+1 D.m.length+1
【正确答案】 B
【解释】
数组下标是从零开始的,但是数据下标的总量和数据长度相同。

【题目编号】 jsd-01-101-1013
【知 识 点】 JAVA基础-JAVA语言基础-运算符和表达式-移位运算符
【难易程度】 30
【题目描述】
关于运算符>>和>>>描述正确的是()
【选项】
A.>>执行移动 B.>>执行翻转
C.>>执行有符号左移,>>>执行无符号左移
D.>>执行无符号左移,>>>执行有符号左移
【正确答案】 C
【解释】

【题目编号】 jsd-01-101-1014
【知 识 点】 JAVA基础-JAVA语言基础-进制
【难易程度】 50
【题目描述】
存储一个24X24点阵的汉字(每个点1bit),需要多少字节( )
【选项】
A. 24 B. 48 C. 72 D. 144
【正确答案】 C
【解释】
解释:2424/8=72。解释下意思:2424的结果是二进制位,而八个二进制位等于一个字节,所以再除以八是所得的字节数。

【题目编号】 jsd-01-101-2001
【知 识 点】 JAVA基础-JAVA语言基础-关键字
【难易程度】 30
【题目描述】
如下哪些不是 java 的关键字?( )
【选项】
A.const B.NULL C.false D.this E.native
【正确答案】 BC
【解释】
虽然 null false 还有 true 不是 java 的关键字,但是都有特殊用途,不建议作为标识符。

【题目编号】 jsd-01-101-2002
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-while
【难易程度】 40
【题目描述】
69.已知如下代码:( )
public class Test{
public static void main(String arg[] ){
int i = 5;
do{ System.out.print(i);
}while(–i>5)
System.out.print(“finished”);
}
}
执行后的输出是什么?
【选项】
A. 5 B. 4 C. 6 D. finished
【正确答案】 AD
【解释】
输出 5finished,do?while 循环中循环体一定会执行一次

【题目编号】 jsd-01-101-2003
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 20
【题目描述】
下面的哪些声明是合法的?( )
A. long 1 = 4990 B. int i = 4L C. float f =1.1 D. double d = 34.4
【选项】
【正确答案】AD
【解释】
B.4L 应该是 long 类型的写法,C.1.1 是 double 类型 ,float f=1.1f 是正确写法

【题目编号】 jsd-01-101-2004
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 10
【题目描述】
选择 Java 语言中的基本数据类型( )
【选项】
A.byte B.Integer C.String D.char E.long
【正确答案】 ADE
【解释】
基本数据类型总共有 8 个:byte,short,int,long,char,boolean,float,double

【题目编号】 jsd-01-101-2005
【知 识 点】 JAVA基础-JAVA语言基础-运算符和表达式
【难易程度】 20
【题目描述】
从下列选项中选择正确的 Java 表达式
【选项】
A.int k=new String(“aa”) B.String str=String(“bb”)
C.char c=74; D.long j=8888;
【正确答案】 BCD
【解释】

【题目编号】 jsd-01-101-2006
【知 识 点】 JAVA基础-JAVA语言基础
【难易程度】 20
【题目描述】
下列描述中,哪些符合 Java 语言的特征
【选项】
A. 支持跨平台(Windows,Linux,Unix等)
B. GC(自动垃圾回收),提高了代码安全性
C. 支持类 C 的指针运算操作
D. 不支持与其它语言书写的程序进行通讯
【正确答案】 AB
【解释】

【题目编号】 jsd-01-101-4001
【知 识 点】 JAVA基础-JAVA语言基础-递归方法-递归方法
【难易程度】 80
【题目描述】
简单说明什么是递归?什么情况会使用?并使用 java 实现一个简单的递归程序。
【正确答案】
1)递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程中直接或间接调 用自身而产生的重入现象。
2)递归算法一般用于解决三类问题:
a.数据的定义是按递归定义的。(Fibonacci(斐波那契)函数)
b.问题解法按递归算法实现。(回溯)
c.数据的结构形式是按递归定义的。(树的遍历,图的搜索)
3)这是一个排列的例子,它所做的工作是将输入的一个字符串中的所有元素进行排序并输出,例如: 你给出的参数是"abc" 则程序会输出:abc acb bac bca cab cba
a.算法的出口在于:low=high也就是现在给出的排列元素只有一个时。
b.算法的逼近过程:先确定排列的第一位元素,也就是循环中i所代表的元素, 然后low+1开始减少排列元素,如此下去,直到low=high
public class Foo {
public static void main(String[] args) {
permute(“abc”);
}
public static void permute(String str) {
char[] strArray = str.toCharArray();
permute(strArray, 0, strArray.length - 1);
}
public static void permute(char[] list, int low, int high) {
int i;
if (low == high) {
String cout = “”;
for (i = 0; i <= high; i++)
cout += list[i];
System.out.println(cout);
} else {
for (i = low; i <= high; i++) {
char temp = list[low];
list[low] = list[i];
list[i] = temp;
permute(list, low + 1, high);
temp = list[low]; list[low] = list[i]; list[i] = temp;
}
}
}
}
【解释】无

【题目编号】 jsd-01-101-4002
【知 识 点】 JAVA基础-JAVA语言基础-Java开发环境
【难易程度】 30
【题目描述】
列出自己常用的 jdk 包.
【正确答案】
JDK 常用的 package
java.lang: 这个是系统的基础类,比如 String 等都是这里面的,这个 package 是唯一一个可以不用 import 就可以使用的 Package。
java.io: 这里面是所有输入输出有关的类,比如文件操作等
java.net: 这里面是与网络有关的类,比如 URL,URLConnection 等。
java.util : 这个是系统辅助类,特别是集合类 Collection,List,Map 等。
java.sql: 这个是数据库操作的类,Connection, Statememt,ResultSet 等
【解释】无

【题目编号】 jsd-01-101-4003
【知 识 点】 JAVA基础-JAVA语言基础-Java开发环境
【难易程度】 30
【题目描述】
列出自己常用的 jdk 中的数据结构
【正确答案】
线性表,链表,哈希表是常用的数据结构。
【解释】无

【题目编号】 jsd-01-101-4004
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 40
【题目描述】
char 类型能否存储一个中文字符?为什么
【正确答案】
可以。一个 char 是两个字节,而一个中文也是两个字节。
【解释】无

【题目编号】 jsd-01-101-4005
【知 识 点】 JAVA基础-JAVA语言基础-分支结构-switch
【难易程度】 30
【题目描述】
Switch 选择语句能否作用在 String【字符串】上,也就是能否这么写:Switch(一个字符串变量)?
【正确答案】
不可以,只能处理 int,byte,short,char,(其实是只能处理 int,其它三种是可以 promotion 到 int 型)不能处理 Sring 。
【解释】无

【题目编号】 jsd-01-101-4006
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 20
【题目描述】
在 java 语言中 int 和 Integer 有什么区别
【正确答案】
int 是基本数据类型,Integer 是 int 的包装类,属于引用类型
【解释】无

【题目编号】 jsd-01-101-4007
【知 识 点】 JAVA基础-JAVA语言基础-运算符和表达式-关系运算
【难易程度】 20
【题目描述】
计算下列结果:
25&3 =
25|3=
【正确答案】
25 的二进制是11001,3的二进制是00011,按位与的结果是:00001,按位或的结果是:11010,因此转成10进制分别为:1和27。
【解释】无

【题目编号】 jsd-01-101-4008
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-for
【难易程度】 20
【题目描述】
JDK1.5 中支持的 for 循环的语法
【正确答案】
for(type element : array) {
System.out.println(element)
}
type 集合(不仅仅指 Collection,也包含普通的数组)中元素的数据类型element 遍历到的元素;array集合对象本身(当然不只是 Collection)
【解释】无

【题目编号】 jsd-01-101-4009
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 30
【题目描述】
Bit 和 Byte 是什么意思?它们之间有什么关系?
【正确答案】
bit 中文名称是位,是用以描述电脑数据量的最小单位。
byte(字节)是计算机信息技术用于计量存储容量和传输容量的一种计量单位 1byte=8bit
【解释】无

【题目编号】 jsd-01-101-4010
【知 识 点】 JAVA基础-JAVA语言基础
【难易程度】 40
【题目描述】
你认为 java 与其他(你所了解的)语言相比,有什么优点和缺点?
【正确答案】
1). Java 没有预处理指令。(如 C 中的#define , #include , #ifdef 等)。C 中的常量定义在Java 中用 static final 来取代。
2). Java 中没有 C 中的全局变量。
3). Java 中的主类型的 size 是确定的,而 C 中主类型的 size 跟平台相关。
4). Java 中没有了指针,它使用了类似的句柄来取代指针,但是 Java 中不允许对句柄进行加减, 没有取地址操作符之类的东东。
5). Java 有垃圾收集机制,不需要自己释放空间。
6). Java 没有 goto 语句。Java 在 C 提供的控制语句基础上增加了异常处理和标签 break 和continue 语句。这些可以替代 goto 的作用。
7). C 要求一个方法或块中使用的所有局部变量的定义在该方法或块的最开始处定义,而 Java允许这些定义在方法或块的任意地方出现。
8). Java 不要求在调用一个函数以前已经定义了该函数,可以在调用点后面定义。而 C 有这个要 求。
9). Java 不支持 C 中的 strut 和 union 类型。Java 支持方法重载。
10). Java 不支持 C 中的 enum 关键字。
11). Java 不支持 C 中的 bitfields 能力。
12). Java 不支持 C 的 typedef。
13). Java 不支持 C 的方法指针。
14). Java 不支持 C 的可变参数表。
java 和.net 的都不适合做桌面程序,这两个比较适合写 WEB 的程序;
c++比较适合写桌面程序 c++/java 都是强类型的静态预编译型语言。优点是结构性强,程序可读性好, 开发效率高,适合开发大型应用。就本人的经验而言,java 的开发效率优于 c++,实际上 java 大行其道的首要因素就是它够简单。java 尤其不适合开发桌面程序,GUI 的 API 一直都是 java 的弱点;
perl/python 是动态解释型语言。perl 是弱类型的而 python 是强类型的,后者的变量一旦赋值, 就拥有了类型,不能再赋其他类型的值。不象 javascript/perl 可以随便定义。perl 是 unix 下的王牌工具,在缺乏 IDE 的字符界面下,很好地弥补了unix;
shell/utility 的不足,并且部分继承了面向对象语言的灵活性。适合用来搭建大程序。
【解释】无

【题目编号】 jsd-01-101-4011
【知 识 点】 JAVA基础-JAVA语言基础-排序
【难易程度】 50
【题目描述】
排序都有哪几种方法?用伪代码实现一个快速排序
【正确答案】
排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码:使用快速排序方法对 a[ 0 :n- 1 ]排序从 a[ 0 :n- 1 ]中选择一个元素作为 middle,该元素为支点;把余下的元素分割为两段left和 right,使得left中的元素都小于等于支点,而right中的元素都大于等于支点;递归地使用快速排序方法对left进行排序;递归地使用快速排序方法对 right 进行排序;所得结果 为 left + middle + right。
【解释】无

【题目编号】 jsd-01-101-4012
【知 识 点】 JAVA基础-JAVA语言基础-运算符和表达式-逻辑运算符
【难易程度】 50
【题目描述】
String a=null; if (a!=null && a.length()>10) {…}
上面面的代码,如果你用“&”替换“&&”将发生什么错误?
【正确答案】
会抛出空指针异常;&&会短路,只要遇到 boolean 值为 false 就不会再往后执行了;而&则是会 把两边的运算都执行完。
【解释】无

【题目编号】 jsd-01-101-5001
【知 识 点】 JAVA基础-JAVA语言基础-方法-递归方法
【难易程度】 50
【题目描述】
用递归方法实现正序显示数组元素。例如 String[] s = {“a”,”b”,”c”,”d”};
方法声明如下:
void print(String[] s,int i){ }
【正确答案】
参数 i 是指打印 string 数组的起始位置,原理是正序打印 s 从第 0 个开始的所有字符串,等价于先打印第 0 个,在打印 s 中从第一个开始的所有字符串,如此递归
void print(String[] s, int i) {
if ((i >= 0) && (i < s.length)) {
System.out.print(s[i]);
i++;
print(s, i);
}
}
【解释】无

【题目编号】 jsd-01-101-5002
【知 识 点】 JAVA基础-JAVA语言基础-分支结构-if else
【难易程度】 60
【题目描述】
请写出求 n!的算法。
【正确答案】
public class Factorial {
public static void main(String[] args) {
long n = 6;
System.out.println(doFactorial(n));
}
public static long doFactorial(long n) {
if (n < 1) {
System.out.println(“ERROR”);
return 0;
} else if (n == 1 || n == 2) {
return n;
} else {
return n * doFactorial(n - 1);
}
}
}
【解释】无

【题目编号】 jsd-01-101-5003
【知 识 点】 JAVA基础-JAVA语言基础-排序-冒泡排序
【难易程度】 60
【题目描述】
编写一个字符界面的 Java Application 程序,接受用户输入的 10 个整数,并输出这 10 个整数的最大值和最小值。
【正确答案】
采用了冒泡进行排序
import java.util.Scanner;
import java.util.Scanner;
public class MaxAndMin {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
int next = scanner.nextInt();
arr[i] = next;
}
int[] after=Arrays.sort(arr);
System.out.println(“最小值:”+after[0]+",最大值:"+after[arr.length-1]);
}
}
【解释】无

【题目编号】 jsd-01-101-5004
【知 识 点】 JAVA基础-JAVA语言基础-排序-选择排序
【难易程度】 50
【题目描述】
写一个排序算法 1-100 随机数字,进行排序,要求效率。
【正确答案】
public class Sort {
// 选择排序方法
public static void selectionSort(int[] number) {
for (int i = 0; i < number.length - 1; i++) {
int m = i;
for (int j = i + 1; j < number.length; j++) {
if (number[j] < number[m])
m = j;
}
if (i != m)
swap(number, i, m);
}
}
// 用于交换数组中的索引为 i、j 的元素
private static void swap(int[] number, int i, int j) {
int t;
t = number[i]; number[i] = number[j]; number[j] = t;
}
public static void main(String[] args) {
// 定义一个数组
int[] num = new int[100];
for(int i=0;i<num.length;i++){
num[i]=(int)(Math.random()*100)+1;
}
// 排序
selectionSort(num);
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
}
}
【解释】无

【题目编号】 jsd-01-101-5005
【知 识 点】 JAVA基础-JAVA语言基础-排序-冒泡排序
【难易程度】 50
【题目描述】
冒泡排序:依次比较相邻的两个数,将大数放在前面,小数放在后面。第一趟结束,在最后的数必是 所有数中的最小数。重复以上过程,直至最终完成排序。由于在排序过程中总是大数往前放,小数往后 放,相当于气泡往上升,所以称作冒泡排序。请用 JAVA 语言编写一个完成冒泡排序算法的程序。
【正确答案】
解答:
int[] bubbleSort(int before[]) {
int t;
for (int i = 0; i < before.length; i++) {
for (int j = 0; j < before.length - i - 1; j++) {
if (before[j] > before[j + 1]) {
t = before[j];
before[j] = before[j + 1];
before[j + 1] = t;
}
}
}
return before;
}
【解释】无

【题目编号】 jsd-01-101-5006
【知 识 点】 JAVA基础-JAVA语言基础-分支结构、循环结构
【难易程度】 70
【题目描述】
下面是一个由*号组成的 4 行倒三角形图案。要求:1、输入倒三角形的行数,行数的取值 3-21 之 间,对于非法的行数,要求抛出提示“非法行数!”;2、在屏幕上打印这个指定了行数的倒三角形。




【正确答案】
import java.util.Scanner;
public class Lines {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
int lines = scanner.nextInt();
if (lines > 3 && lines < 21) {
for (int i = lines-1; i >= 0; i–) {
for (int z = 0; z <= i * 2; z++) {
System.out.print("*");
}
System.out.print("\n");
}
}else{
System.out.println(“非法行数!”);
}
}
}
【解释】无

【题目编号】 jsd-01-101-5007
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-for
【难易程度】 50
【题目描述】
编写一个程序,用来计算 1 到 100 间所有整数的和是多少?
【正确答案】
public static void GetSum(){
int sum = 0;
for(int i=1;i<=100;i++){
sum+=i;
}
System.out.println(“和为:”+sum);
}
【解释】无

【题目编号】 jsd-01-101-5008
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-for
【难易程度】 80
【题目描述】
打印出杨辉三角形(编程题)
【正确答案】
public class printYang {
public static void main(String[] args) {
int[][] a = new int[10][10];
for(int i=0; i<10; i++) {
a[i][i] = 1;
a[i][0] = 1;
}
for(int i=2; i<10; i++) {
for(int j=1; j<i; j++) {
a[i][j] = a[i-1][j-1] + a[i-1][j];
}
}
for(int i=0; i<10; i++) {
for(int k=0; k<2*(10-i)-1; k++) {
System.out.print(" ");
}
for(int j=0; j<=i; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
}
}
【解释】无

【题目编号】 jsd-01-101-5009
【知 识 点】 JAVA基础-JAVA语言基础-循环结构
【难易程度】 60
【题目描述】
下列代码的输出结果是什么?
public class MyFor {
public static void main (String argv[]){
int i; int j;
outer:for(i=1;i<3;i++)
inner:for(j=1;j<3;j++){
if (j==2) continue outer;
System.out .println(“Value for i=”+i+" Value for j=" +j);
}
}
}
【正确答案】
Value for i=1 Value for j=1
Value for i=2 Value for j=1
【解释】无

【题目编号】 jsd-01-101-5010
【知 识 点】 JAVA基础-JAVA面向对象-普通数组、进制
【难易程度】 80
【题目描述】
现有一个 32 位的整型变量 value 和一个有 32 个元素的数组 a[32],
要求:1、对 value 随机赋值;2、让数组 a[n]的值等于 value“位 n”的值,0<=n<=31。举例:如果 value 的“位 0”(Bit0)=0,那么 a[0]=0;如果 value 的“位 10”(Bit10)=1,那么 a[10]=1。
【正确答案】
public class Foo {
public static void main(String[] args) {
//产生随机数
int random = (int) (Math.random() * Integer.MAX_VALUE + 1);
//转成二进制字符串
String str=Integer.toBinaryString(random);
//转成二进制时最前面的零被省略,补上省略的 0
if(str.length()<32){
for(int j=0;j<=32-str.length();j++){
str=“0”+str;
}
}
//给数组赋值
int[] a=new int[32];
for(int i=0;i<str.length();i++){
a[i]=Integer.parseInt(String.valueOf(str.charAt(i)));
System.out.println(“a[”+i+"]="+a[i]);
}
}
}
【解释】无
1.2 JAVA面向对象
【题目编号】 jsd-01-102-1001
【知 识 点】 JAVA基础-JAVA面向对象-static、抽象类-抽象方法
【难易程度】 30
【题目描述】
Abstract method cannot be static. True or False ?
【选项】
A. True
B. False
【正确答案】 A
【解释】
抽象方法可以在子类中被重写,但是静态方法不能在子类中被重写,静态方法和静态属性与对象是无关的,只与类有关,这与abstract 是矛盾的,所以abstract 是不能被修饰为 static,否则就失去了abstract的意义了。

【题目编号】 jsd-01-102-1002
【知 识 点】 JAVA基础-JAVA面向对象-重写、父子类
【难易程度】 60
【题目描述】
What will be the output when you compile and execute the following program.
class Base
{
void test() {
System.out.println(“Base.test()”);
}
}
public class Child extends Base {
void test() { System.out.println(“Child.test()”);}
static public void main(String[] a) {
Child anObj = new Child();
Base baseObj = (Base)anObj;
baseObj.test();
}
}
Select most appropriate answer.
【选项】
A. Child.test() Base.test()
B. Base.test() Child.test()
C. Base.test()
D. Child.test()
【正确答案】 D
【解释】
测试代码相当于:Base baseObj = new Child();父类的引用指向子类的实例,子类又重写了父类 的 test 方法,因此调用子类的 test 方法。

【题目编号】 jsd-01-102-1003
【知 识 点】 JAVA基础-JAVA面向对象-static、、父子类
【难易程度】 60
【题目描述】
What will be the output when you compile and execute the following program.
class Base{
static void test() { System.out.println(“Base.test()”); }
}

public class Child extends Base {
void test() {
System.out.println(“Child.test()”);
Base.test(); //Call the parent method
}
static public void main(String[] a) {
new Child().test();
}
}
Select most appropriate answer.
【选项】
A. Child.test() Base.test()
B. Child.test() Child.test()
C. Compilation error. Cannot override a static method by an instance method
D. Runtime error. Cannot override a static method by an instance method
【正确答案】 C
【解释】
静态方法不能在子类中被重写。

【题目编号】 jsd-01-102-1004
【知 识 点】 JAVA基础-JAVA面向对象-引用类型数组
【难易程度】 30
【题目描述】
执行完以下代码 int [ ] x = new int[25];后,以下哪项说明是正确的( ):
【选项】
A. x[24]为 0
B. x[24]未定义
C. x[25]为 0
D. x[0]为空
【正确答案】 A
【解释】
x 属于引用类型,该引用类型的每一个成员是 int 类型,默认值为:0

【题目编号】 jsd-01-102-1005
【知 识 点】 JAVA基础-JAVA面向对象-static-static块
【难易程度】 60
【题目描述】
关于以下 application 的说明,正确的是( ):
1. class StaticStuff
2. {
3. static int x=10;
4. static { x+=5;}
5. public static void main(String args[ ])
6. {
7. System.out.println(“x=” + x);
8. }
9. static { x/=3;}
10. }
【选项】
A. 4 行与 9 行不能通过编译,因为缺少方法名和返回类型
B. 9 行不能通过编译,因为只能有一个静态初始化器
C. 编译通过,执行结果为:x=5
D. 编译通过,执行结果为:x=3
【正确答案】 C
【解释】
自由块是类加载的时候就会被执行到的,自由块的执行顺序是按照在类中出现的先后顺序执行。

【题目编号】 jsd-01-102-1006
【知 识 点】 JAVA基础-JAVA面向对象-static
【难易程度】 60
【题目描述】
关于以下程序代码的说明正确的是( ):
1.class HasStatic{
2. private static int x=100;
3. public static void main(String args[ ]){
4. HasStatic hs1=new HasStatic( );
5. hs1.x++;
6. HasStatic hs2=new HasStatic( );
7. hs2.x++;
8. hs1=new HasStatic( );
9. hs1.x++;
10. HasStatic.x–;
11. System.out.println(“x=”+x);
12. }
13.}
【选项】
A. 5 行不能通过编译,因为引用了私有静态变量
B. 10 行不能通过编译,因为 x 是私有静态变量
C. 程序通过编译,输出结果为:x=103
D. 程序通过编译,输出结果为:x=102
【正确答案】 D
【解释】
静态变量是所有对象所共享的,所以上述代码中的几个对象操作是同一静态变量 x, 静态变量可以通过类名调用。

【题目编号】 jsd-01-102-1007
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-构造方法
【难易程度】 40
【题目描述】
下列说法正确的有()
【选项】
A. class 中的 constructor 不可省略
B. constructor 必须与 class 同名,但方法不能与 class 同名
C. constructor 在一个对象被 new 时执行
D.一个 class 只能定义一个 constructor
【正确答案】 C
【解释】
构造方法的作用是在实例化对象的时候给数据成员进行初始化 A.类中如果没有显示的给出构造方法,系统会提供一个无参构造方法 B.构造方法与类同名,类中可以有和类名相同的方法 D.构造方法可以重载

【题目编号】 jsd-01-102-1008
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-实例方法
【难易程度】 40
【题目描述】
下列哪种说法是正确的()
【选项】
A.实例方法可直接调用超类的实例方法
B.实例方法可直接调用超类的类方法
C.实例方法可直接调用其他类的实例方法
D.实例方法可直接调用本类的类方法
【正确答案】 D
【解释】
A. 实例方法不可直接调用超类的私有实例方法
B. 实例方法不可直接调用超类的私有的类方法
C.要看访问权限

【题目编号】 jsd-01-102-1009
【知 识 点】 JAVA基础-JAVA面向对象-抽象类-抽象方法
【难易程度】 60
【题目描述】
下列哪一种叙述是正确的( )
【选项】
A. abstract 修饰符可修饰字段、方法和类
B. 抽象方法的 body 部分必须用一对大括号{ }包住
C. 声明抽象方法,大括号可有可无
D. 声明抽象方法不可写出大括号
【正确答案】 D
【解释】
abstract 可以修饰方法和类,不能修饰属性。抽象方法没有方法体,即没有大括号{}

【题目编号】 jsd-01-102-1010
【知 识 点】 JAVA基础-JAVA面向对象-面向对象概念
【难易程度】 30
【题目描述】
以下关于面向对象概念的描述中,不正确的一项是()。
【选项】
A.在现实生活中,对象是指客观世界的实体
B.程序中的对象就是现实生活中的对象
C.在程序中,对象是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(class)
D.在程序中,对象是一组变量和相关方法的集合
【正确答案】 B
【解释】

【题目编号】 jsd-01-102-1011
【知 识 点】 JAVA基础-JAVA面向对象-对象内存管理-堆栈
【难易程度】 30
【题目描述】
栈是一种( )
【选项】
A. 存取受限的线性结构
B. 存取不受限的线性结构
C. 存取受限的非线性结构
D. 存取不受限的非线性结构
【正确答案】 A
【解释】
栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。

【题目编号】 jsd-01-102-1012
【知 识 点】 JAVA基础-JAVA面向对象-对象内存管理-垃圾回收
【难易程度】 30
【题目描述】
下列哪些语句关于内存回收的说明是正确的。
【选项】
A. 程序员必须创建一个线程来释放内存
B. 内存回收程序负责释放无用内存
C. 内存回收程序允许程序员直接释放内存
D. 内存回收程序可以在指定的时间释放内存对象
【正确答案】 B
【解释】
垃圾收集器在一个 Java 程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用 System. gc 方法来"建议"执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。

【题目编号】 jsd-01-102-1013
【知 识 点】 JAVA基础-JAVA面向对象-接口、抽象类-抽象方法
【难易程度】 40
【题目描述】
Which method must be defined by a class implementing the java.lang.Runnable interface?
【选项】
A. void run()
B. public void run()
C. public void start()
D. void run(int priority)
E. public void run(int priority)
F. public void start(int priority)
【正确答案】 B
【解释】
实现 Runnable 接口,接口中有一个抽象方法 run,实现类中实现该方法。

【题目编号】 jsd-01-102-1014
【知 识 点】 JAVA基础-JAVA面向对象-内部类-匿名内部类
【难易程度】 60
【题目描述】
Given:
public static void main(String[] args) {
Object obj = new Object() {
public int hashCode() {
return 42;
}
}; System.out.println(obj.hashCode());
}
What is the result?
【选项】
A. 42
B. An exception is thrown at runtime.
C. Compilation fails because of an error on line 12.
D. Compilation fails because of an error on line 16.
E. Compilation fails because of an error on line 17.
【正确答案】 A
【解释】
匿名内部类覆盖 hashCode 方法。

【题目编号】 jsd-01-102-1016
【知 识 点】 JAVA基础-JAVA面向对象-访问控制
【难易程度】 70
【题目描述】
Exhibit:
1.package foo;
2.import java.util.Vector;
3.private class MyVector extends Vector {
4. int i = 1;
5. public MyVector() {
6. i = 2;
7. }
8.}
9.public class MyNewVector extends MyVector {
10. public MyNewVector () {
11. i = 4;
12. }
13. public static void main (String args []) {
14. MyVector v = new MyNewVector();
15. }
16.}
The file MyNewVector.java is shown in the exhibit. What is the result?
【选项】
A. Compilation will succeed.
B. Compilation will fail at line 3.
C. Compilation will fail at line 6.
D. Compilation will fail at line 9. E. Compilation will fail at line 14.
【正确答案】 B
【解释】
类 MyVector 不能是私有的

【题目编号】 jsd-01-102-1016
【知 识 点】 JAVA基础-JAVA面向对象-继承
【难易程度】 60
【题目描述】
在下面程序的第 6 行补充上下列哪个方法,会导致在编译过程中发生错误?

  1. class Super{
  2.  public float getNum(){
    
  3.  	return 3.0f;
    
  4.  }
    
  5. }
  6. pubhc class Sub extends Super{
  7. }
    【选项】
    A,public float getNum(){retun 4.0f;}
    B.public void getNum(){}
    C.public void getNum(double d){}
    D.public double getNum(float d){ retun 4.0f ;}
    【正确答案】 B
    【解释】
    方法重写的问题。子类中有和父类的方法名相同,但是参数不同,不会出编译错误,认为是子类 的特有的方法,但是如果子类中方法和父类的方法名,参数,访问权限,异常都相同,只有返回值类型不同会编译不通过。

【题目编号】 jsd-01-102-1017
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-实例方法
【难易程度】 50
【题目描述】
关于实例方法和类方法,以下描述正确的是:( )
【选项】
A. 实例方法只能访问实例变量
B. 类方法既可以访问类变量,也可以访问实例变量
C. 类方法只能通过类名来调用
D. 实例方法只能通过对象来调用
【正确答案】 D
【解释】
A 实例方法可以访问类变量;B 类方法只能访问类变量;C 类方法可以通过对象调用

【题目编号】 jsd-01-102-1018
【知 识 点】 JAVA基础-JAVA面向对象-接口
【难易程度】 20
【题目描述】
接口是 Java 面向对象的实现机制之一,以下说法正确的是:( )
【选项】
A. Java 支持多重继承,一个类可以实现多个接口;
B. Java 只支持单重继承,一个类可以实现多个接口;
C. Java 只支持单重继承,一个类只可以实现一个接口;
D. Java 支持多重继承,但一个类只可以实现一个接口。
【正确答案】 B
【解释】
Java 支持单重继承,一个类只能继承自另外的一个类,但是一个类可以实现多个接口。

【题目编号】 jsd-01-102-1019
【知 识 点】 JAVA基础-JAVA面向对象-接口
【难易程度】 40
【题目描述】
下列关于 interface 的说法正确的是:( )
【选项】
A. interface 中可以有 private 方法
B. interface 中可以有 final 方法
C. interface 中可以有 function 实现
D. interface 可以继承其他 interface
【正确答案】 D
【解释】
A. 接口中不可以有 private 的方法
B.接口中不可以有 final 的方法 接口中的方法默认是 public abstract 的
C.接口中的方法不可以有实现

【题目编号】 jsd-01-102-1020
【知 识 点】 JAVA基础-JAVA面向对象-访问控制-访问修饰符
【难易程度】 50
【题目描述】
已知 A 类被打包在 packageA, B 类被打包在 packageB,且B类被声明为 public,且有一个成员变量 x 被声明为, protected 控制方式 。C 类也位于 packageA 包,且继承了 B 类。则以下说话正确的是( )
【选项】
A. A 类的实例不能访问到 B 类的实例
B. A 类的实例能够访问到 B 类一个实例的 x 成员
C. C 类的实例可以访问到 B 类一个实例的 x 成员
D. C 类的实例不能访问到 B 类的实例
【正确答案】 C
【解释】
不同包子类的关系, 可以访问到父类 B 的 protected 成员

【题目编号】 jsd-01-102-1021
【知 识 点】 JAVA基础-JAVA面向对象-继承-父子类
【难易程度】 70
【题目描述】
以下程序正确的输出是( )
package test;
public class FatherClass {
public FatherClass() {
System.out.println(“FatherClass Create”);
}
}
package test;
import test.FatherClass;
public class ChildClass extends FatherClass {
public ChildClass() {
System.out.println(“ChildClass Create”);
}
public static void main(String[] args) {
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
【选项】
A. FatherClass Create
FatherClass Create
ChildClass Create
B. FatherClass Create
ChildClass Create
FatherClass Create
C. ChildClass Create
ChildClass Create
FatherClass Create
D. ChildClass Create
FatherClass Create
FatherClass Create
【正确答案】 A
【解释】
在子类构造方法的开始默认情况下有一句 super();来调用父类的构造方法

【题目编号】 jsd-01-102-1022
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-构造方法
【难易程度】 40
【题目描述】
给定如下代码,下面哪个可以作为该类的构造函数 ( )
public class Test {
?
}
【选项】
A. public void Test() {?}
B. public Test() {?}
C. public static Test() {?}
D. public static void Test() {?}
【正确答案】 B
【解释】
构造方法:与类同名没有返回类型

【题目编号】 jsd-01-102-1023
【知 识 点】 JAVA基础-JAVA面向对象-抽象类-抽象方法、访问控制-访问修饰符
【难易程度】 60
【题目描述】
从下面四段(A,B,C,D)代码中选择出正确的代码段()
【选项】
A.abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {}
}
B.public class Something {
void doSomething () {
private String s = “”; int l = s.length();
}
}
C.public class Something {
public static void main(String[] args) {
Other o = new Other(); new Something().addOne(o);
}
public void addOne(final Other o) {
o.i++;
}
}
class Other {
public int i;
}
D.public class Something { public int addOne(final int x) { return ++x; }
}
【正确答案】 C
【解释】
A. 抽象方法不能有方法体
B.方法中定义的是局部变量,不能用类成员变量修饰符 private
D.final 修饰为常量,常量的值不能被改变

【题目编号】 jsd-01-102-1024
【知 识 点】 JAVA基础-JAVA面向对象-继承-重载和重写
【难易程度】 30
【题目描述】
下面那几个函数是 public void method(){…}的重载函数?()
【选项】
A.public void method( int m){…}
B.public int method(){…}
C.public void method2(){…}
D.public int method(int m,float f ){…}
【正确答案】 A
【解释】
重载:方法名相同,参数列表不同

【题目编号】 jsd-01-102-1025
【知 识 点】 JAVA基础-JAVA面向对象-继承-instanceof
【难易程度】 70
【题目描述】
类 Teacher 和 Student 是类 Person 的子类; Teacher t;
Student s;
// t and s are all non-null.
if (t instanceof Person ){ s=(Student)t; }
最后一条语句的结果是:
【选项】
A.将构造一个 Student 对象; B.表达式是合法的;
C.表达式是错误的; D.编译时正确, 但运行时错误。
【正确答案】 D
【解释】
instanceof 是 Java 的一个二元操作符,它的作用是测试它左边的对象是否是它右边的类的实例,返 回 boolean 类型的数据。Teahcer 和 Student 之间没有继承关系不能做强制类型转换。

【题目编号】 jsd-01-102-1026
【知 识 点】 JAVA基础-JAVA面向对象-抽象类、static、final
【难易程度】 50
【题目描述】
下列关于修饰符混用的说法,错误的是( ):
【选项】
A. abstract 不能与 final 并列修饰同一个类
B. abstract 类中可以有 private 的成员
C. abstract 方法必须在 abstract 类中
D. static 方法中能处理非 static 的属性
【正确答案】 D
【解释】
静态方法中不能引用非静态的成员

【题目编号】 jsd-01-102-1027
【知 识 点】 JAVA基础-JAVA面向对象-访问控制-访问修饰符
【难易程度】 40
【题目描述】
给出如下代码:( )
class Test{
private int m;
public static void fun() {
//some code?
}
}
如何使成员变量 m 被函数 fun()直接访问?()
【选项】
A.将 private int m 改为 protected int m
B.将 private int m 改为 public int m
C.将 private int m 改为 static int m
D.将 private int m 改为 int m
【正确答案】 C
【解释】
静态的方法中可以直接调用静态数据成员

【题目编号】 jsd-01-102-1028
【知 识 点】 JAVA基础-JAVA面向对象-final
【难易程度】 40
【题目描述】
MAX_LENGTH 是 int 型 public 成员变量,变量值保持为常量 100,用简短语句定义这个变量。
【选项】
A .public int MAX_LENGTH=100; B. final int MAX_LENGTH=100;
C. final public int MAX_LENGTH=100; D. public final int MAX_LENGTH=100.
【正确答案】 D
【解释】
通过题的描述就是定义常量,在 java 中常量命名规范是所有字母都大写用下划线分割每个单词。

【题目编号】 jsd-01-102-1029
【知 识 点】 JAVA基础-JAVA面向对象-继承-重写
【难易程度】 60
【题目描述】
下述代码的执行结果是
class Super {
public int getLength() {return 4;}
}
public class Sub extends Super {
public long getLength() {return 5;}
public static void main (String[]args) {
Super sooper = new Super ();
Super sub = new Sub();
System.out.printIn(sooper.getLength()+ “,” + sub.getLength() };
}
}
【选项】
A. 4, 4
B. 4, 5
C. 5, 4
D. 5, 5
E. 代码不能被编译
【正确答案】 E
【解释】
方法重写返回值类型与父类的一致

【题目编号】 jsd-01-102-1030
【知 识 点】 JAVA基础-JAVA面向对象-接口
【难易程度】 70
【题目描述】
Which two demonstrate a “has a” relationship(Choose two)?
【选项】
A. public interface Person { }
public class Employee extends Person{ }
B. public interface Shape { }
public interface Rectandle extends Shape { }
C. public interface Colorable { }
public class Shape implements Colorable{ }
D. public class Species{ }
public class Animal{private Species species;} E. interface Component{ }
class Container implements Component{
private Component[] children;
}
【正确答案】 D
【解释】
“has a”是关联关系,关联分双向关联和单向关联,双向关联是 A,B 类分别持有对方的引用(有是对方 的属性).单向关联是一方持另一方的引用.

【题目编号】 jsd-01-102-1031
【知 识 点】 JAVA基础-JAVA面向对象-继承-父子类
【难易程度】 60
【题目描述】
Given the folowing classes which of the following will compile without error?
interface IFace{}
class CFace implements IFace{}
class Base{}
public class ObRef extends Base{
public static void main(String argv[]){
ObRef ob = new ObRef(); Base b = new Base();
Object o1 = new Object(); IFace o2 = new CFace();
}
}
【选项】
A.o1=o2; B. b=ob; C. ob=b; D. o1=b;
【正确答案】 B
【解释】
b 和 ob 对应的类之间没有任何关系,要想 b=ob 成立要么是父子关系,要么是接口实现类的关系

【题目编号】 jsd-01-102-1032
【知 识 点】 JAVA基础-JAVA面向对象-引用类型数组
【难易程度】 50
【题目描述】
下面哪个是正确的?( )
【选项】
A. String temp [] = new String {“a” “b” “c”};
B. String temp [] = {“a” “b” “c”}
C. String temp = {“a”, “b”, “c”}
D. String temp [] = {“a”, “b”, “c”}
【正确答案】 D
【解释】

【题目编号】 jsd-01-102-1033
【知 识 点】 JAVA基础-JAVA核心API-final
【难易程度】 40
【题目描述】
关于 java.lang.String 类,以下描述正确的一项是( )
【选项】
A. String 类是 final 类故不可以继承;
B. String 类是 final 类故可以继承;
C. String 类不是 final 类故不可以继承;
D. String 类不是 final 类故可以继承;
【正确答案】 A
【解释】
String 类是 final 的,在 java 中 final 修饰类的不能被继承

【题目编号】 jsd-01-102-2001
【知 识 点】 JAVA基础-JAVA面向对象-继承-父子类、重写
【难易程度】 40
【题目描述】
下面中哪两个可以在 A 的子类中使用:( )
class A {
protected int method1 (int a, int b) {
return 0;
}
}
【选项】
A. public int method 1 (int a, int b) { return 0; }
B. private int method1 (int a, int b) { return 0; }
C. private int method1 (int a, long b) { return 0; }
D. public short method1 (int a, int b) { return 0; }
【正确答案】 AC
【解释】
主要考查子类重写父类的方法的原则; B,子类重写父类的方法,访问权限不能降低; C,属于重载;D,子类重写父类的方法返回值类型要相同或是父类方法返回值类型的子类。

【题目编号】 jsd-01-102-2002
【知 识 点】 JAVA基础-JAVA面向对象-内部类、static
【难易程度】 50
【题目描述】
Given:
public class OuterClass {
private double d1 = 1.0;
//insert code here
}
You need to insert an inner class declaration at line2. Which two inner class declarations are valid? (Choose Two)
【选项】
A. static class InnerOne { public double methoda() {return d1;} }
B. static class InnerOne { static double methoda() {return d1;} }
C. private class InnerOne { public double methoda() {return d1;} }
D. protected class InnerOne { static double methoda() {return d1;} }
E. public abstract class InnerOne { public abstract double methoda(); }
【正确答案】 CE
【解释】
AB.内部类可以声明为 static 的,但此时就不能再使用外层封装类的非 static 的成员变量; D.非 static 的内部类中的成员不能声明为 static 的,只有在顶层类或 static 的内部类中 才可声明 static 成员

【题目编号】 jsd-01-102-2003
【知 识 点】 JAVA基础-JAVA面向对象-final
【难易程度】 40
【题目描述】
Which two declarations prevent the overriding of a method? (Choose Two)
【选项】
A. final void methoda() {}
B. void final methoda() {} C. static void methoda() {}
D. static final void methoda() {}
E. final abstract void methoda() {}
【正确答案】 AD
【解释】
final 修饰方法,在子类中不能被重写。

【题目编号】 jsd-01-102-2004
【知 识 点】 JAVA基础-JAVA面向对象-对象和类
【难易程度】 40
【题目描述】
下列说法错误的有()
【选项】
A. 在类方法中可用 this 来调用本类的类方法
B. 在类方法中调用本类的类方法时可直接调用
C. 在类方法中只能调用本类中的类方法
D. 在类方法中绝对不能调用实例方法
【正确答案】 ACD
【解释】
A.在类方法中不能使用 this 关键字 C.在类方法中可以调用其它类中的类方法 D.在类方法中可以通过实例化对象调用实例方法

【题目编号】 jsd-01-102-2005
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-构造方法
【难易程度】 70
【题目描述】
给出下面的代码段:( )
public class Base{
int w, x, y, z;
public Base(int a, int b)
{x=a; y=b;}
public Base(int a, int b, int c, int d){
//assignment x=a, y=b w=d;z=c;
}}
在代码说明//assignment x=a, y=b 处写下如下哪几个代码是正确的?()
【选项】
A.Base(a, b); B.x=a, y=b; C.x=a; y=b; D.this(a,b);
【正确答案】 CD
【解释】
C 是直接给 x,y 赋值;D 是使用 this 调用本类中其它的构造方法。

【题目编号】 jsd-01-102-2006
【知 识 点】 JAVA基础-JAVA面向对象-static
【难易程度】
【题目描述】
下面关于变量及其范围的陈述哪些是不正确的( ):
【选项】
A. 实例变量是类的成员变量
B. 实例变量用关键字 static 声明
C. 在方法中定义的局部变量在该方法被执行时创建
D. 局部变量在使用前必须被初始化
【正确答案】 BC
由 static 修饰的变量称为类变量或是静态变量,法加载的时候创建局部变量。

【题目编号】 jsd-01-102-2007
【知 识 点】 JAVA基础-JAVA面向对象-访问控制
【难易程度】 30
【题目描述】
属性的可见性有( )
【选项】
A. 公有的 B. 私有的 C. 私有保护的 D. 保护的
【正确答案】 ABD
【解释】
属性的可见性有四种:公有的(public) 保护的(protected) 默认的 私有的(private)

【题目编号】 jsd-01-102-2008
【知 识 点】 JAVA基础-JAVA面向对象-访问控制-访问修饰符
【难易程度】 60
【题目描述】
Given:

  1. public interface Foo{
  2. int k = 4;
  3. }
    Which three are equivalent to line 2? (Choose Three)
    【选项】
    A. final int k = 4;
    B. Public int k = 4;
    C. static int k = 4;
    D. Private int k = 4;
    E. Abstract int k = 4;
    F. Volatile int k = 4;
    G. Transient int k = 4;
    H. protected int k = 4;
    【正确答案】 BDE
    【解释】
    static:修饰的静态变量;final 修饰的是常量;abstract 不能修饰变量;
    Volatile 修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。 而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻, 两个不同的线程总是看到某个成员变量的同一个值。
    Transient:对不需序列化的类的域使用 transient 关键字,以减少序列化的数据量。
    int k=4 相当于 public static final int k=4; 在接口中可以不写 static final

【题目编号】 jsd-01-102-2009
【知 识 点】 JAVA基础-JAVA面向对象-访问控制、接口
【难易程度】 30
【题目描述】
能用来修饰 interface 的有()
【选项】
A.private B.public C.protected D.static
【正确答案】 ACD
【解释】
修饰接口可以是 public 和默认

【题目编号】 jsd-01-102-2010
【知 识 点】 JAVA基础-JAVA面向对象-引用类型数组
【难易程度】 50
【题目描述】
执行下列代码后,哪个结论是正确的 String[] s=new String[10];
【选项】
A. s[9] 为 null; B. s[10] 为 “”; C. s[0] 为 未定义 D. s.length 为 10
【正确答案】 AD
【解释】
s 是引用类型,s 中的每一个成员都是引用类型,即 String 类型,String 类型默认的值为 null s 数组的长度为 10。

【题目编号】 jsd-01-102-2011
【知 识 点】 JAVA基础-JAVA面向对象-引用类型数组
【难易程度】 70
【题目描述】
Which two create an instance of an array? (Choose Two)
【选项】
A. int[] ia = new int [15];
B. float fa = new float [20];
C. char[] ca = “Some String”;
D. Object oa = new float[20];
E. Int ia [][] = (4, 5, 6) (1, 2, 3)
【正确答案】 AD
【解释】
任何类的父类都是 Object,数组也数据引用类型,Object oa = new float[20];这种写法相当于父类的用指向之类的实例。

【题目编号】 jsd-01-102-4001
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-类加载
【难易程度】 40
【题目描述】
谈谈对 ClassLoader 的理解?
【正确答案】
ClassLoader 加载类用的是全盘负责委托机制。所谓全盘负责,即是当一个 classloader 加载 一个 Class 的时候,这个 Class 所依赖的和引用的所有 Class 也由这个 classloader 负责载入,除非 是显式的使用另外一个 classloader 载入;委托机制则是先让 parent(父)类加载器 (而不是 super, 它与 parent classloader 类不是继承关系)寻找,只有在 parent 找不到的时候才从自己的类路径中 去寻找。此外类加载还采用了 cache 机制,也就是如果 cache 中保存了这个 Class 就直接返回它,如 果没有才从文件中读取和转换成 Class,并存入 cache,这就是为什么我们修改了 Class 但是必须重 新启动 JVM 才能生效的原因。
【解释】无

【题目编号】 jsd-01-102-4002
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-构造方法
【难易程度】 40
【题目描述】
构造器 Constructor 是否可以被继承?是否可以被 Override?
【正确答案】
构造器 Constructor 不能被继承,因此不能重写 Overriding,但可以被重载 Overloading。
【解释】无

【题目编号】 jsd-01-102-4003
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-面向对象
【难易程度】 50
【题目描述】
面向对象的特征有哪些方面?
【正确答案】
面向对象的特征主要有以下几个方面:
1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继 承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3)封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4)多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
【解释】无

【题目编号】 jsd-01-102-4004
【知 识 点】 JAVA基础-JAVA面向对象-接口、抽象类
【难易程度】 40
【题目描述】
接口是否可继承接口? 抽象类是否可实现接口? 抽象类是否可继承实体类?
【正确答案】
接口是可以继承接口的并且可以继承多个其它接口;抽象类可以实现接口中的方法;抽象类可以继承实体类。
【解释】无

【题目编号】 jsd-01-102-4005
【知 识 点】 JAVA基础-JAVA面向对象-内部类-匿名内部类
【难易程度】 40
【题目描述】
nonymous Inner Class (匿名内部类) 是否可以 extends(继承)其它类,是否可以 implements(实现)interface(接口)?
【正确答案】
匿名内部类是可以继承其它类,同样也可以去实现接口的,用法为:
JButton button = new JButton();
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){//some mothod…}
});
这样的用法在 swing 编程中是经常使用的,就是因为它需要用到注册监听器机制,而该监听类如果只服务于一个组件,那么,将该类设置成内部类/匿名类是最方便的。
【解释】无

【题目编号】 jsd-01-102-4006
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-构造方法
【难易程度】 60
【题目描述】
一个 subclass 怎样调用 superclass 中的方法(myMethod)和构造函数?
【正确答案】
用 super 关键字,子类去调用父类的方法,如:super.myMethod();子类去调用父类的构造函数, 如:super();。
【解释】无

【题目编号】 jsd-01-102-4007
【知 识 点】 JAVA基础-JAVA面向对象-抽象类、接口
【难易程度】 40
【题目描述】
abstract class 和 interface 有什么区别?
【正确答案】
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现 某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建 abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。新型多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,所有成员变量都是 public static final 的。一个类可以实现多个接口,当类实现接口时,必须实现接口的所有方法。抽象类在 Java 语言中表示的是一种单继承的关系,对于 interface 来说则不然,并不要求 interface 的实现者和 interface 定义在概念本质上是一致的,仅仅是实现了 interface 定义的契约而已。;抽象类中可以定义自己的成员变量,也可以包含非抽象的方法,而在接 口中只能有静态的常量,所有方法必须是抽象的;实现抽象类时可以只实现其中的部分方法,而要是 实现一个接口的话就必须实现这个接口中的所有抽象方法。
【解释】无

【题目编号】 jsd-01-102-4008
【知 识 点】 JAVA基础-JAVA面向对象-对象和类
【难易程度】 20
【题目描述】
类有哪三个基本特性?各特性的优点?
【正确答案】
类具有封装性、继承性和多态性。 封装性:类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私 有变量和类中方法的实现细节。 继承性:类的继承性提供从已存在的类创建新类的机制,继承(inheritance)使一个新类自动拥有 被继承类(父类)的全部可继承的成员。 多态性:类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。
【解释】无

【题目编号】 jsd-01-102-4009
【知 识 点】 JAVA基础-JAVA面向对象-访问控制、重载和重写
【难易程度】 40
【题目描述】
java 语言中 public、private、protected 三个关键字的用法,重写和重载的区别。
【正确答案】
作用域
public
×
×
×
重写:发生在父子类之间,方法名相同,参数的类型、个数、顺序相同,返回值相同,访问权限不能 更封闭,抛出异常不能宽泛; 重载:发生在同一个类中,方法名相同,但是参数不同(类型不同或个数不同或参数的顺序不同), 返回值可以不相同。
【解释】

【题目编号】 jsd-01-102-4010
【知 识 点】 JAVA基础-JAVA面向对象-反射
【难易程度】 60
【题目描述】
Java 反射机制的作用? Java 反射机制的作用是:
【正确答案】
1)在运行时判断任意一个对象所属的类。
2)在运行时构造任意一个类的对象。
3)在运行时判断任意一个类所具有的成员变量和方法。
4)在运行时调用任意一个对象的方法
【解释】无

【题目编号】 jsd-01-102-4011
【知 识 点】 JAVA基础-JAVA面向对象-static、final
【难易程度】 30
【题目描述】
关键字 final 分别修饰一个类,一个方法,一个变量,各起什么作用
【正确答案】
final 修饰类是不能被继承
fianl 修饰方法不能在子类中被覆盖。
final 修饰变量,称为常量,初始化以后不能改变值。
【解释】无

【题目编号】 jsd-01-102-4012
【知 识 点】 JAVA基础-JAVA面向对象-对象内存管理-垃圾回收
【难易程度】 20
【题目描述】
什么是垃圾回收?什么时候触发垃圾回收?如何降低垃圾回收的触发频率?它能保证程序有足够的可用内存吗?
【正确答案】
【解释】无
垃圾回收(GC)是 Java 语言的一个重要特性,作用是释放不再被使用的内存。垃圾回收由系统 进行管理。在系统认为需要的时候自动启动一个线程进行处理。 尽量减少垃圾内存,也就是新建对象的数量,可以降低垃圾回收的频率。 垃圾回收机制无法保证有足够的内存。

【题目编号】 jsd-01-103-4013
【知 识 点】 JAVA基础-JAVA面向对象-final
【难易程度】 20
【题目描述】
是否可以继承 String 类
【正确答案】
不可以。因为 String 类有 final 修饰。
【解释】无

【题目编号】 jsd-01-102-5001
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-方法调用
【难易程度】 40
【题目描述】
编写代码实现同一平面内两圆是否碰撞,其中: 第一个圆圆心坐标为(x1,y1),半径是 r1,第二个圆圆心坐标为(x2,y2),半径是 r2。
方法声明如下:
boolean collisWith(int x1,int y1,int r1,int x2,int y2,int r2){}
【正确答案】
boolean collisWith(int x1, int y1, int r1, int x2, int y2, int r2) {
boolean flag=false;
int num1=(x1-x2)(x1-x2);
int num2=(y1-y2)
(y1-y2);
int num3=num1+num2;
double distance=Math.sqrt(num3);
if(distance<=(r1+r2)){
flag=true;
}
return flag;
}
【解释】无

【题目编号】 jsd-01-102-5002
【知 识 点】 JAVA基础-JAVA面向对象-对象和类
【难易程度】 50
【题目描述】
创建类 Person,其中存储的成员数据为:age(int),sex(boolean),weight(int),至少有一个构造函数可以初始化这三个属性值,同时提供获取这三个属性值的 public 方法
【正确答案】
public class Person {
private int age;
private boolean sex;
private int weight;
public Person() {}
public Person(int age, boolean sex, int weight) {
this.age = age; this.sex = sex; this.weight = weight;
}
public int getAge() {
return age;
}
public boolean isSex() {
return sex;
}
public int getWeight() {
return weight;
}
}
【解释】无

【题目编号】 jsd-01-102-5003
【知 识 点】 JAVA基础-JAVA面向对象-引用类型数组
【难易程度】 80
【题目描述】
类DynArray实现了一个动态数组。当数组的空间不够时动态分配空间。
【正确答案】
Class DynArray{
private int size;
private int[] array;
private final int DEFAULT_LENGTH = 10;
public DynArray() {
size = 0;
array = new int[DEFAULT_LENGTH];
}
public void add(int element) {
ensureCapacity();
this.array[this.size++] = element;
}
private void ensureCapacity() {
if (size == array.length) {
int[] longerArray = new int[size * 2];
System.arraycopy(array, 0, longerArray, 0, size);
this.array = longerArray;
}
}
}
【解释】无

【题目编号】 jsd-01-102-5004
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-类的编写
【难易程度】 60
【题目描述】
定义一个学生类, 需要有姓名, 年龄, 考试成绩三个成员属性. 属性(成员变量)需要私有并提供get, set方法, 可以通过构造函数进行初始化。
【正确答案】
public class StudentDemo {
private String name;
private int age;
private int score;
public StudentDemo(String name, int age, int score) {
super();
this.name = name;
this.age = age;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
【解释】无

【题目编号】 jsd-01-102-5005
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-类的编写
【难易程度】 90
【题目描述】
编写BankAccount类,要求如下:
A. 该类由此款人姓名(String name ),存款余额(double balance),存期(int year)及年利
  率(double rate)四个数据成员,其中年利率的默认值为0.03.
B. 该类有两个重载的构造方法.其中一个构造方法不含参数,设置默认的存款为10元,存期一年;另一个构造函数包含二个用于创建对象时设置存款额与存期的参数。
C. 该类有三个方法:存款(save),取款(fetch)及计算存期满后的总金额(calcTotal).
D. 创建一个账号fans,创建时即(利用构造函数)存入1000元,存期3年,后又存入2000元(利用save方法),计算存期满后的总金额(利用calcTotal方法)
【正确答案】
public class BankAccount {
private String name;//姓名(账号)
private double balance;//存款余额
private int year;//存期
private double rate=0.03;//年利率
//构造方法
public BankAccount(String name){
this(name,10.0,1);//默认存款10元,存期1年
}
//构造方法
public BankAccount(String name,double deposit,int year){
this.name=name;
this.balance=deposit;
this.year=year;

}
//存款
public void save(double deposit){
	this.balance+=deposit;
}
//取款
public double fetch(double reduce) throws Exception{
	if(this.balance>=reduce){
		this.balance-=reduce;//余额
		return reduce;
	}
	else{
		throw new Exception("不能透支!");			
	}		
}
//存期满后的总金额
public double calcTotal(){
	
	double total=balance;
	for(int i=1;i<=year;i++){
		total=total*(1+rate);
	}
	return total;
}
public static void main(String[] args) {
	// TODO Auto-generated method stub
	//测试用
	BankAccount fans=new BankAccount("fans",1000,1);
	fans.save(2000);
	double totalMoney=fans.calcTotal();
	System.out.println("totalMoney==>"+totalMoney);
	
} 

【解释】无

【题目编号】 jsd-01-102-5006
【知 识 点】 JAVA基础-JAVA面向对象-反射、普通数组
【难易程度】 90
【题目描述】
用反射机制声明长度为 10 的 int 型数组的表达式
【正确答案】
import java.lang.reflect.Array;
public class IntArrayDemo {
public static void main(String[] args) {
Class c = int.class;
Object objArr = Array.newInstance(c, 10);
for(int i = 0; i < 10; i++) {
Array.set(objArr, i, i);
}
int[] arr=(int[])objArr;
for(int j = 0; j < arr.length; j++) {
System.out.println(arr[j]);
}
}
}
【解释】无

【题目编号】 jsd-01-102-5007
【知 识 点】 JAVA基础-JAVA面向对象-内部类、static-static块
【难易程度】 70
【题目描述】
请阅读如下代码,请问答以下三条打印语句输出的结果是什么?
public class Main {
public static String staticProperty = “1”;
public String property = “a”;
static {
staticProperty = “2”;
}
public Main () {
this.property = “b”;
staticProperty = “3”;
}
{
this.property = “c”;
staticProperty = “4”;
}
public static void main(String[] args){
System.out.println(Main.staticProperty);
System.out.println(new Main().property);
System.out.println(Main.staticProperty);
}
}
【正确答案】
2
b
3
【解释】无

【题目编号】 jsd-01-102-5008
【知 识 点】 JAVA基础-JAVA面向对象-继承
【难易程度】 60
【题目描述】
有 2 个类 Cat 及 WhiteCat,代码如下:
public class Cat {
protected static String color = “random”;
public Cat() {
}
public void showCatColor() {
System.out.println(“Cat:” + color);
}
public static void showColor() {
System.out.println(“Cat:” + color);
}
}
public class WhiteCat extends Cat {
protected static String color = “white”;
public WhiteCat() {
super();
}
public void showCatColor() {
System.out.println(“WhiteCat:” + color);
}
public static void showColor() {
System.out.println(“WhiteCat:” + color);
}
}
请分析下面各段程序的运行结果
A. WhiteCat whiteCat = new WhiteCat();
Cat cat = whiteCat;
cat.showColor(); cat.showCatColor();
A. Cat cat = new Cat();
WhiteCat whiteCat = (WhiteCat) cat;
cat.showColor();
cat.showCatColor();
B. Cat cat = new WhiteCat();
WhiteCat whiteCat = (WhiteCat) cat;
cat.showColor();
cat.showCatColor();
【正确答案】
A 段执行的结果是: Cat:random WhiteCat:white
B 段执行的结果是:会抛出 java.lang.ClassCastException 异常
C 段执行的结果是: Cat:random WhiteCat:white
【解释】无

【题目编号】 jsd-01-102-5009
【知 识 点】 JAVA基础-JAVA面向对象-final、普通数组
【难易程度】 40
【题目描述】
判断下列语句是否正确,如果有错误,请指出错误所在?
void foo(final int []arg){
if (arg.length > 1)
arg[0] = 5;
}
【正确答案】
正确
【解释】无

【题目编号】 jsd-01-102-5010
【知 识 点】 JAVA基础-JAVA面向对象-对象和类
【难易程度】 40
【题目描述】
判断下列语句是否正确,如果有错误,请指出错误所在?
interface A{
int add(final A a);
}
class B implements A{
long add(final A a){
return this.hashCode() + a.hashCode();
}
}
【正确答案】
错,返回值不是 long 类型
【解释】无

【题目编号】 jsd-01-102-5011
【知 识 点】 JAVA基础-JAVA面向对象-继承、static-static块
【难易程度】 50
【题目描述】
指出下面程序的运行结果:
class A{
static{
System.out.print(“a”);
}
public A (){
System.out.print(“x”);
}
}
class B extends A{
static{System.out.print(“b”);}
public B (){
System.out.print(“y”);
}
}
public class Test{
public static void main(String[] args){
A ab = new B ();
ab = new B ();
}
}
【正确答案】
abxyxy
【解释】无

【题目编号】 jsd-01-102-5012
【知 识 点】 JAVA基础-JAVA面向对象-内部类
【难易程度】 80
【题目描述】
下列程序运行的结果是
class A {
class Dog {
private String name; private int age; private int step;
Dog(String s, int a) {
name = s; age = a; step = 0;
}
public void run(Dog fast) {
fast.step++;
}
}
public static void main(String args[]) {
A a = new A();
Dog d = a.new Dog(“Tom”, 3);
d.step = 25; d.run(d);
System.out.println(d.step);
}
}
【正确答案】
26
【解释】无

【题目编号】 jsd-01-102-5013
【知 识 点】 JAVA基础-JAVA面向对象-继承
【难易程度】 60
【题目描述】
请看下列程序,运行结果是
class Super{
int i=10;
Super(){ print(); i=20;}
void print(){ System.out.print(i);}
}
public class Sub extends Super{
int j=30;
Sub(){ print(); j=40;}
void print(){ System.out.print(j);}
public static void main(String[] args){ System.out.print(new Sub().j);}
}
【正确答案】
03040
【解释】无
1.3 JAVA核心API-String、正则表达式、Object、包装类、日期操作等
【题目编号】 jsd-01-103-1001
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 40
【题目描述】
Given:
public class foo {
static String s;
public static void main (String[]args) {
System.out.println (“s=” + s);
}
}
What is the result?
【选项】
A. The code compiles and “s=” is printed.
B. The code compiles and “s=null” is printed.
C. The code does not compile because string s is not initialized.
D. The code does not compile because string s cannot be referenced.
E. The code compiles, but a NullPointerException is thrown when toString is called.
【正确答案】 B
【解释】
String 为引用数据类型,引用类型数据成员的默认值为 null

【题目编号】 jsd-01-103-1002
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 60
【题目描述】
What will be the output when you compile and execute the following program. The symbol ’? ’ means space.
1:public class Base{
2:
3: private void test() {
4:
5: String aStr = “? One? “;
6: String bStr = aStr;
7: aStr.toUpperCase();
8: aStr.trim();
9: System.out.println(”[” + aStr + “,” + bStr + “]”);
10: }
11:
12: static public void main(String[] a) {
13: new Base().test();
14: }
15: }
Select most appropriate answer.
【选项】
A. [ONE,? One? ]
B. [? One? ,One]
C. [ONE,One]
D.[ONE,ONE]
E. [? One? ,? One? ]
【正确答案】 E
【解释】
通过 String bStr = aStr;这句代码使 bStr 和 aStr 指向同一个地址空间,所以最后 aStr 和 bStr 的结 果应该是一样,String 类是定长字符串,调用一个字符串的方法以后会形成一个新的字符串。

【题目编号】 jsd-01-103-1003
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 40
【题目描述】
Java 语言中,String 类的 IndexOf()方法返回的类型是?
【选项】
A. Int16
B. Int32
C. int
D. long
【正确答案】 C
【解释】
indexOf 方法的声明为:public int indexOf(int ch)
在此对象表示的字符序列中第一次出现该字符的索引;如果未出现该字符,则返回 -1。

【题目编号】 jsd-01-103-1004
【知 识 点】 JAVA基础-JAVA核心API-包装类
【难易程度】 30
【题目描述】
Given:
public class Test {
private static float[] f = new float[2];
public static void main(String args[]) {
System.out.println(“f[0] = “ + f[0]);
}
}
What is the result?
【选项】
A. f[0] = 0
B. f[0] = 0.0
C. Compilation fails.
D. An exception is thrown at runtime.
【正确答案】 B
【解释】

【题目编号】 jsd-01-103-1005
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 70
【题目描述】
Given:
public class Test {
public static void main (String [] args) {
String foo = “blue”;
String bar = foo; foo = “green”; System.out.println(bar);
}
}
What is the result?
【选项】
A. An exception is thrown.
B. The code will not compile.
C. The program prints “null”
D. The program prints “blue”
E. The program prints “green”
【正确答案】 D
【解释】
采用 String foo = “blue”定义方式定义的字符串放在字符串池中,通过 String bar = foo;
他们指向了同一地址空间,就是同一个池子,当执行 foo = “green”; foo 指向新的地址空间。

【题目编号】 jsd-01-103-1006
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 60
【题目描述】
指出下列程序运行的结果
public class Example{
String str=new String(“good”);
char[]ch={‘a’,‘b’,‘c’};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
System.out.print(ex.ch);
}
public void change(String str,char ch[]){
str=“test ok”;
ch[0]=‘g’;
}
}
【选项】
A. good and abc B. good and gbc
C. test ok and abc D. test ok and gbc
【正确答案】 B
【解释】
数组和字符串都是引用类型。

【题目编号】 jsd-01-103-1007
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 30
【题目描述】
给出如下声明:
String s = “Example”; 合法的代码由哪些?
【选项】
A. s>>>=3 B. s[3]= “X” C. int i = s.iength() D. s = s +10
【正确答案】 D
【解释】
A. 移位运算,要是整数类型。;B.s 不是数组;C.String 类取长度的方法为:length() D. 字符串相加

【题目编号】 jsd-01-103-1008
【知 识 点】 JAVA基础-JAVA核心API -字符串操作
【难易程度】 50
【题目描述】
What will be the output when you compile and execute the following program.
public class Base{
private void test() {
System.out.println(6 + 6 + “(Result)”);
}
static public void main(String[] a) {
new Base().test();
}
}
Select most appropriate answer.
【选项】
A. 66(Result)
B. 12(Result)
C. Runtime Error.Incompatible type for +. Can’t convert an int to a string.
D. Compilation Error.Incompatible type for +. Can’t add a string to an int.
【正确答案】 B
【解释】
字符串与基本数据类型链接的问题,如果第一个是字符串那么后续就都按字符串处理,比如上边例子要是 System.out.println("(Result)"+6 + 6 );那么结果就是(Result)66,如果第一个和第二个……第 n 个都是基本数据第 n+1 是字符串类型,那么前 n 个都按加法计算出结果在与字符串连接

【题目编号】 jsd-01-103-1009
【知 识 点】 JAVA基础-JAVA核心API –正则表达式
【难易程度】 20
【题目描述】
正则表达式”\d+.?\d*”在匹配下列字符串时结果是失败的是?
【选项】
A. 12.5 B. 1.25 C. 以上都成功 D. 以上都失败
【正确答案】 B
【解释】
\d+ 表示可以出现 1 次或是 n 次数字
. .? 表示可以“.”可以出现一次,也可以不出现
\d* 表示可以出现 0 次或是 n 次数字

【题目编号】 jsd-01-103-2001
【知 识 点】 JAVA基础-JAVA核心API- Math方法
【难易程度】 40
【题目描述】
Which code determines the int value foo closest to a double value bar?
【选项】
A. int foo = (int) Math.max(bar);
B. int foo = (int) Math.min(bar);
C. int foo = (int) Math.abs(bar);
D. int foo = (int) Math.ceil(bar);
E. int foo = (int) Math.floor(bar); F. int foo = (int) Math.round(bar);
【正确答案】 DEF
【解释】
A B 两个选项方法是用错误,都是两个参数。
abs 方法是取 bar 的绝对值,ceil 方法返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。floor方法返回最大的(最接近正无穷大)double值,该值小于等于参数,并等于某个整数。round方法返回最接近参数的 long。

【题目编号】 jsd-01-103-2002
【知 识 点】 JAVA基础-JAVA核心API-Object-equals方法
【难易程度】 50
【题目描述】
String s=new String(“hello”); String t =new String(“hello”);
char c [ ] ={‘h’,’e’,’l’,’l’,’o’};
下列哪些表达式返回 true ?
【选项】
A.s.equals(t); B.t.equals©; C.s= =t ;
D.t.equals (new String(“hello”)); E.t= = c;
【正确答案】 AD
【解释】
String 类的 equals 方法已经覆盖了Object 类的 equals 方法,比较的是两个字符串的内容是否相等,双等号比较的是两个对象的内存地址是否相等

【题目编号】 jsd-01-103-4001
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 30
【题目描述】
String,StringBuffer,StringBuilder 的区别。
【正确答案】
String 的长度是不可变的;
StringBuffer 的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时, 那么使用 StringBuffer,如果最后需要 String,那么使用 StringBuffer 的 toString()方法;线程安全;
StringBuilder 是从 JDK 5 开始,为 StringBuffer 该类补充了一个单个线程使用的等价类;通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
【解释】无

【题目编号】 jsd-01-103-4002
【知 识 点】 JAVA基础-JAVA核心API-日期操作
【难易程度】 50
【题目描述】
如何格式化日期
【正确答案】
Date now=new Date();
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
String formatNow=sdf.format(now);
变量 formatNow 就是格式化好的日期。
【解释】无

【题目编号】 jsd-01-103-4003
【知 识 点】 JAVA基础-JAVA核心API-包装类
【难易程度】 30
【题目描述】
将字符“12345”转换成 long 型
【正确答案】
String s=“12345”;
long num=Long.valueOf(s).longValue();
【解释】无

【题目编号】 jsd-01-103-4004
【知 识 点】 JAVA基础-JAVA核心API-Object-equals方法
【难易程度】 30
【题目描述】
数组有没有 length()这个方法?String 有没有 length()这个方法?
【正确答案】
数组没有 length()方法它有length 属性String 有 length()方法。
【解释】无

【题目编号】 jsd-01-103-4005
【知 识 点】 JAVA基础-JAVA核心API-正则表达式
【难易程度】 40
【题目描述】
请写出如下正则表达式的含义;
com︱cn︱net
^http://www.d-heaven.com/$
^http://www.sina.com.cn/new/newid=\d+
【正确答案】
com︱cn︱net 表示匹配 com 或是 cn 或是 net 中一个
^http://www.d-heaven.com/$ 表示匹配:http://www.d-heaven.com/
^http://www.sina.com.cn/new/newid=\d+ 表示匹配 错误!超链接引用无效。多个数字

【题目编号】 jsd-01-103-5001
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 60
【题目描述】
在 web 应用开发过程中经常遇到输出某种编码的字符,如从 GBK 到 iso8859-1 等,如何输出一个 某种编码的字符串?
【正确答案】
public static String translate(String str) {
String tempStr = “”;
try {
tempStr = new String(str.getBytes(“ISO-8859-1”), “GBK”);
tempStr = tempStr.trim();
} catch (Exception e) {
System.err.println(e.getMessage());
}
return tempStr;
}
【解释】无

【题目编号】 jsd-01-103-5002
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 60
【题目描述】
请写出一个公用方法,输入 String 返回该串是否含有非空字符,并写出 junit 的测试用例。
【正确答案】
public class TestString {
public static boolean hasBlank(String str) {
if (str.endsWith("") || str.startsWith("")) {
return false;
} else {
String[] strs = str.split("");
if (strs.length == 1) {
return false;
}
}
return true;
}
@Test
public void testFun() {
System.out.println(TestString.hasBlank(“test”));
}
}
【解释】无

【题目编号】 jsd-01-103-5003
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 80
【题目描述】
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是 要保证汉字不被截半个,如"我 ABC"4,应该截为"我 AB",输入"我 ABC 汉 DEF",6,应该输出为"我 ABC"而不是"我 ABC+汉的半个"。
【正确答案】
package com.tarena;
public class SplitString {
String SplitStr;
int SplitByte;
public SplitString(String str, int bytes) {
SplitStr = str;
SplitByte = bytes;
System.out.println(“The String is:” + SplitStr + “;SplitBytes=”+ SplitByte);
}
public void SplitIt(){
int loopCount;
loopCount=(SplitStr.length()%SplitByte0)?(SplitStr.length()/SplitByte):
(SplitStr.leng th()/SplitByte+1);
System.out.println("Will Split into "+loopCount);
for (int i=1;i<=loopCount ;i++ ){
if (i
loopCount){
System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));
} else {
System.out.println(SplitStr.substring((i-1)SplitByte,(iSplitByte)));
}
}
}
public static void main(String[] args) {
SplitString ss = new SplitString(
“test 中 dd 文 dsaf 中男大 3443n 中国 43 中国人 0ewldfls=103”, 4);
ss.SplitIt();
}
}
【解释】无

【题目编号】 jsd-01-103-5004
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 80
【题目描述】
假定屏幕的像素宽度为 screenWidth,写一个函数计算一个字符串需要分成几行显示。 要求:
1)、每行应尽可能多地显示字符,但不能有字符部分或完全显示在屏幕外。超过部分的字符换下一行 显示。
2)、每个字符的像素宽度不一样,每个字符的像素宽度不一样。用 int GetCharWidth(char c)获得每个字符的像素宽度
【正确答案】
/**

  • 计算一个字符串可以分多少行进行显示
  • @param s原始字符串
  • @param screenWidth屏幕宽度
  • @return 行数
    */
    public int calcLineNum(String s, int screenWidth) {
    int length = 0;
    // 行数
    int n = 0;
    // 统计长度
    for (int i = 0; i < s.length(); i++) {
    // 当前字符的宽度
    int charLen =