笔试面试题集(java)

这是一个整理的Java面试题集,全面覆盖了Java语言基础,包括面向对象、核心API、循环结构、异常处理等方面,并深入到数据库、JDBC、PLSQL、JavaWeb以及流行框架如Struts、Hibernate、Mybatis和Spring等知识点。题目内容详细,包括选项、正确答案和解释,旨在帮助考生熟悉并掌握Java相关技能。
摘要由CSDN通过智能技术生成

    前言

本书为自己的面试试题和收藏自认为比极好的题目,整理归类在word文档中。然后复制到csdn中,涵盖了java面试中出现的各个知识点,包括java语言基础、数据库、web编程、框架等。其中每个部分都按小知识点进行笔试面试题整理,并在题后紧跟详细的分析步骤和解答。

目录

前言

第一部分:JAVA基础

1.1 JAVA语言基础

1.2 JAVA面向对象

1.3 JAVA核心API-String、正则表达式、Object、包装类、日期操作等

1.4 JAVA核心API-集合操作

1.5 JAVA核心API-IO操作

1.6 JAVA核心API-异常处理

1.7 JAVA核心API-多线程

1.8 JAVA核心API-网络通信

1.9 JAVA核心API-XML

1.10 Swing编程

1.10 设计模式

第二部分:数据库、JDBC、PLSQL

2.1 数据库

2.2 PLSQL

2.3 JDBC

                                                                                                                                第一部分java基础

1.1java基础语言:

【题目编号】         zc-01-101-1001

【知 识 点】         JAVA基础-JAVA语言基础-运算符-三目运算符

【题目描述】

编译运行以下程序后,关于输出结果的说明正确的是(       ):

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 容量高。

 

【题目编号】         zc-01-101-1002

【知 识 点】         JAVA基础-JAVA语言基础-运算符和表达式-转义字符

【题目描述】

在字符串前面加上(  )符号,则字符串中的转义字符将不被处理。

【选项】

A. @             B. \    C.#    D.%

【正确答案】         B

【解释】        无

【题目编号】         zc-01-101-1003

【知 识 点】         JAVA基础-JAVA语言基础-循环结构-while

【题目描述】

下列代码哪行会出错:

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 没有初始化就使用了

 

【题目编号】         zc-01-101-1004

【知 识 点】         JAVA基础-JAVA语言基础-排序-插入排序

【题目描述】

对记录序列{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;

    }

}

 

【题目编号】         zc-01-101-1005

【知 识 点】         JAVA基础-JAVA语言基础-Java基本类型

【题目描述】

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。

 

【题目编号】        zc-01-101-1006

【知 识 点】         JAVA基础-JAVA语言基础-关键字

【题目描述】

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 应该小写

 

【题目编号】      zc-01-101-1007

【知 识 点】         JAVA基础-JAVA语言基础-普通数组

【题目描述】

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 producethe 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 开始

 

【题目编号】          zc-01-101-1008

【知 识 点】         JAVA基础-JAVA语言基础-分支结构-switch

【题目描述】

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:向下的代码都会执行。

 

【题目编号】     

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:向下的代码都会执行。

 

【题目编号】         zc-01-101-1009

【知 识 点】         JAVA基础-JAVA语言基础-关键字

【题目描述】

下面关于 import, class 和 package 的声明顺序哪个正确?( )

【选项】

A. package, import, class

B. class, import, package

C. import, package, class

D. package, class, import

【正确答案】         A

【解释】         无

 

【题目编号】         zc-01-101-1010

【知 识 点】         JAVA基础-JAVA语言基础-进制

【题目描述】

题目:

1. public class test (

2.      public static void main (String args[]) {

3.      int i = 0xFFFFFFF1;

4.      int j = ~i;

5.

6.      }

7. )

程序运行到第 5 行时,j 的值为多少?(        )

【选项】

A. –15

B. 0

C. 1

D. 14

E. 在第三行的错误导致编译失败

【正确答案】         D

【解释】

int i = 0xFFFFFFF1;相当于 int i=-15然后对 i 进行取反即取绝对值再减一

 

【题目编号】         zc-01-101-1011

【知 识 点】         JAVA基础-JAVA语言基础-循环结构-for

【题目描述】

选择下面代码的运行结果:()。

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 循环。

 

【题目编号】         zc-01-101-1012

【知 识 点】         JAVA基础-JAVA语言基础-普通数组

【题目描述】

         已知表达式 int m [ ] = {0,1,2,3,4,5,6}; 下面哪个表达式的值与数组下标量总数相等?(         )

【选项】

A .m.length()             B.m.length             C.m.length()+1                  D.m.length+1

【正确答案】         B

【解释】

数组下标是从零开始的,但是数据下标的总量和数据长度相同。

 

【题目编号】         zc-01-101-1013

【知 识 点】         JAVA基础-JAVA语言基础-运算符和表达式-移位运算符

【题目描述】

关于运算符>>和>>>描述正确的是()

【选项】

A.>>执行移动                           B.>>执行翻转

C. >>执行有符号右移,>>>执行无符号右移  

D.>>执行无符号右移,>>>执行有符号右移

【正确答案】         C

【解释】         无

 

【题目编号】         zc-01-101-1014

【知 识 点】         JAVA基础-JAVA语言基础-进制

【题目描述】

存储一个24X24点阵的汉字(每个点1bit),需要多少字节(  )

【选项】

A. 24                   B. 48     C. 72     D. 144

【正确答案】         C

【解释】

解释:24*24/8=72。解释下意思:24*24的结果是二进制位,而八个二进制位等于一个字节,所以再除以八是所得的字节数。

 

【题目编号】         zc-01-101-1015

【知 识 点】         JAVA基础-JAVA语言基础-关键字

【题目描述】

如下哪些不是 java 的关键字?( )

【选项】

A.const            B.NULL            C.false              D.this E.native

【正确答案】         BC

【解释】

虽然 null false 还有 true 不是 java 的关键字,但是都有特殊用途,不建议作为标识符。

 

【题目编号】         zc-01-101-1016

【知 识 点】         JAVA基础-JAVA语言基础-循环结构-while

【题目描述】

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 循环中循环体一定会执行一次

 

【题目编号】         zc-01-101-1017

【知 识 点】         JAVA基础-JAVA语言基础-Java基本类型

【题目描述】

下面的哪些声明是合法的?(     )

【选项】

A. long l= 4990                   B. int i = 4L                 C. float f =1.1                   D.double d = 34.4

【正确答案】AD   

【解释】

B.4L 应该是 long 类型的写法,C.1.1 是 double 类型 ,floatf=1.1f 是正确写法

 

【题目编号】         zc-01-101-1018

【知 识 点】         JAVA基础-JAVA语言基础-Java基本类型

【题目描述】

选择 Java 语言中的基本数据类型(          )

【选项】

A.byte      B.Integer      C.String    D.char    E.long

【正确答案】         ADE

【解释】

基本数据类型总共有 8 个:byte,short,int,long,char,boolean,float,double

 

【题目编号】        zc-01-101-1019

【知 识 点】         JAVA基础-JAVA语言基础-运算符和表达式

【题目描述】

从下列选项中选择正确的 Java 表达式

【选项】

A.int k=new String(“aa”)          B.String str=String(“bb”)

C.char c=74;                                D.long j=8888;

【正确答案】         CD

【解释】         无

 

【题目编号】         zc-01-101-1020

【知 识 点】         JAVA基础-JAVA语言基础

【题目描述】

下列描述中,哪些符合 Java 语言的特征

【选项】

A.     支持跨平台(Windows,Linux,Unix等)

B.     GC(自动垃圾回收),提高了代码安全性

C.     支持类 C 的指针运算操作

D.     不支持与其它语言书写的程序进行通讯

【正确答案】         AB

【解释】         无

【知 识 点】         JAVA基础-JAVA语言基础-关键字

【题目描述】

下面关于 import, class 和 package 的声明顺序哪个正确?( )

【选项】

A. package, import, class

B. class, import, package

C. import, package, class

D. package, class, import

【正确答案】         A

【解释】         无

 

【题目编号】         zc-01-101-1021

【知 识 点】         JAVA基础-JAVA语言基础-进制

【题目描述】

题目:

1. public class test (

2.      public static void main (String args[]) {

3.      int i = 0xFFFFFFF1;

4.      int j = ~i;

5.

6.      }

7. )

程序运行到第 5 行时,j 的值为多少?(        )

【选项】

A. –15

B. 0

C. 1

D. 14

E. 在第三行的错误导致编译失败

【正确答案】         D

【解释】

int i = 0xFFFFFFF1;相当于 int i=-15然后对 i 进行取反即取绝对值再减一

 

【题目编号】         zc-01-101-1022

【知 识 点】         JAVA基础-JAVA语言基础-循环结构-for

【题目描述】

选择下面代码的运行结果:()。

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 循环。

 

【题目编号】         zc-01-101-1023

【知 识 点】         JAVA基础-JAVA语言基础-普通数组

【题目描述】

         已知表达式 int m [ ] = {0,1,2,3,4,5,6}; 下面哪个表达式的值与数组下标量总数相等?(         )

【选项】

A .m.length()             B.m.length             C.m.length()+1                  D.m.length+1

【正确答案】         B

【解释】

数组下标是从零开始的,但是数据下标的总量和数据长度相同。

 

【题目编号】         zc-01-101-1024

【知 识 点】         JAVA基础-JAVA语言基础-运算符和表达式-移位运算符

【题目描述】

关于运算符>>和>>>描述正确的是()

【选项】

A.>>执行移动                           B.>>执行翻转

C. >>执行有符号右移,>>>执行无符号右移  

D.>>执行无符号右移,>>>执行有符号右移

【正确答案】         C

【解释】         无

 

【题目编号】         zc-01-101-1025

【知 识 点】         JAVA基础-JAVA语言基础-进制

【题目描述】

存储一个24X24点阵的汉字(每个点1bit),需要多少字节(  )

【选项】

A. 24                   B. 48     C. 72     D. 144

【正确答案】         C

【解释】

解释:24*24/8=72。解释下意思:24*24的结果是二进制位,而八个二进制位等于一个字节,所以再除以八是所得的字节数。

 

【题目编号】         zc-01-101-1026

【知 识 点】         JAVA基础-JAVA语言基础-关键字

【题目描述】

如下哪些不是 java 的关键字?( )

【选项】

A.const            B.NULL            C.false              D.this E.native

【正确答案】         BC

【解释】

虽然 null false 还有 true 不是 java 的关键字,但是都有特殊用途,不建议作为标识符。

 

【题目编号】         zc-01-101-1027

【知 识 点】         JAVA基础-JAVA语言基础-循环结构-while

【题目描述】

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 循环中循环体一定会执行一次

 

【题目编号】         zc-01-101-1028

【知 识 点】         JAVA基础-JAVA语言基础-Java基本类型

【题目描述】

下面的哪些声明是合法的?(     )

【选项】

A. long l= 4990                   B. int i = 4L                 C. float f =1.1                   D.double d = 34.4

【正确答案】AD   

【解释】

B.4L 应该是 long 类型的写法,C.1.1 是 double 类型 ,floatf=1.1f 是正确写法

 

【题目编号】         zc-01-101-1029

【知 识 点】         JAVA基础-JAVA语言基础-Java基本类型

【题目描述】

选择 Java 语言中的基本数据类型(          )

【选项】

A.byte      B.Integer      C.String    D.char    E.long

【正确答案】         ADE

【解释】

基本数据类型总共有 8 个:byte,short,int,long,char,boolean,float,double

 

【题目编号】         zc-01-101-1030

【知 识 点】         JAVA基础-JAVA语言基础-运算符和表达式

【题目描述】

从下列选项中选择正确的 Java 表达式

【选项】

A.int k=new String(“aa”)          B.String str=String(“bb”)

C.char c=74;                                D.long j=8888;

【正确答案】         CD

【解释】         无

 

【题目编号】         zc-01-101-1031

【知 识 点】         JAVA基础-JAVA语言基础

【题目描述】

下列描述中,哪些符合 Java 语言的特征

【选项】

A.     支持跨平台(Windows,Linux,Unix等)

B.     GC(自动垃圾回收),提高了代码安全性

C.     支持类 C 的指针运算操作

D.     不支持与其它语言书写的程序进行通讯

【正确答案】         AB

【解释】         无

【题目编号】         zc-01-101-1032

【知 识 点】         JAVA基础-JAVA语言基础-方法-递归方法

【题目描述】

简单说明什么是递归?什么情况会使用?并使用 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;

                   }

         }

}

}

【解释】无

 

【题目编号】         zc-01-101-1033

【知 识 点】         JAVA基础-JAVA语言基础-Java开发环境

【题目描述】

列出自己常用的 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 等

【解释】         无

 

【题目编号】         zc-01-101-1034

【知 识 点】         JAVA基础-JAVA语言基础-Java开发环境

【题目描述】

列出自己常用的 jdk 中的数据结构。

【正确答案】        

线性表,链表,哈希表是常用的数据结构。

【解释】无

 

【题目编号】         zc-01-101-1035

【知 识 点】         JAVA基础-JAVA语言基础-Java基本类型

【题目描述】

char 类型能否存储一个中文字符?为什么

【正确答案】        

可以。一个 char 是两个字节,而一个中文也是两个字节。

【解释】         无

 

【题目编号】         zc-01-101-1036

【知 识 点】         JAVA基础-JAVA语言基础-分支结构-switch

【题目描述】

Switch 选择语句能否作用在 String【字符串】上,也就是能否这么写:Switch(一个字符串变量)?

【正确答案】        

可以,1.7之前只能处理 int,byte,short,char,(其实是只能处理 int,其它三种是可以 promotion 到 int 型)不能处理 String 。从1.7以后可以支持。

【解释】         无

 

【题目编号】         zc-01-101-1037

【知 识 点】         JAVA基础-JAVA语言基础-Java基本类型

【题目描述】

在 java 语言中 int和   Integer有什么区别

【正确答案】        

int 是基本数据类型,Integer 是 int 的包装类,属于引用类型,int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量。

【解释】         无

 

【题目编号】         zc-01-101-1038

【知 识 点】         JAVA基础-JAVA语言基础-运算符和表达式-关系运算

【题目描述】

计算下列结果:

25&3 =

25|3=

【正确答案】        

25 的二进制是11001,3的二进制是00011,按位与的结果是:00001,按位或的结果是:11011,因此转成10进制分别为:1和27。

【解释】         无

 

【题目编号】         zc-01-101-1039

【知 识 点】         JAVA基础-JAVA语言基础-循环结构-for

【题目描述】

JDK1.5 中支持的 for 循环的语法

【正确答案】        

for(type element : array) {

         System.out.println(element)

}

type 集合(不仅仅指Collection,也包含普通的数组)中元素的数据类型element  遍历到的元素;array集合对象本身(当然不只是Collection)。

或者普通for循环语法。

【解释】         无

 

【题目编号】         zc-01-101-1040

【知 识 点】         JAVA基础-JAVA语言基础-Java基本类型

【题目描述】

Bit 和 Byte 是什么意思?它们之间有什么关系?

【正确答案】        

bit 中文名称是位,是用以描述电脑数据量的最小单位。

byte(字节)是计算机信息技术用于计量存储容量和传输容量的一种计量单位 1byte=8bit

【解释】         无

 

【题目编号】         zc-01-101-1041

【知 识 点】         JAVA基础-JAVA语言基础

【题目描述】

你认为 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 的方法指针。

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 的不足,并且部分继承了面向对象语言的灵活性。适合用来搭建大程序。

【解释】         无

 

【题目编号】         zc-01-101-1042

【知 识 点】         JAVA基础-JAVA语言基础-排序

【题目描述】

排序都有哪几种方法?用伪代码实现一个快速排序

【正确答案】        

排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)快速排序的伪代码:使用快速排序方法对 a[ 0 :n- 1 ]排序从 a[ 0 :n- 1 ]中选择一个元素作为 middle,该元素为支点;把余下的元素分割为两段left和 right,使得left中的元素都小于等于支点,而right中的元素都大于等于支点;递归地使用快速排序方法对left进行排序;递归地使用快速排序方法对 right 进行排序;所得结果为 left + middle + right。

【解释】         无

 

【题目编号】         zc-01-101-1043

【知 识 点】         JAVA基础-JAVA语言基础-运算符和表达式-逻辑运算符

【题目描述】

String a=null; if (a!=null && a.length()>10){...}

上面面的代码,如果你用“&”替换“&&”将发生什么错误?

【正确答案】        

会抛出空指针异常;&&会短路,只要遇到 boolean 值为 false 就不会再往后执行了;而&则是会把两边的运算都执行完。

【解释】         无

 

【题目编号】         zc-01-101-1044

【知 识 点】         JAVA基础-JAVA语言基础-方法-递归方法

【题目描述】

用递归方法实现正序显示数组元素。例如 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);

  }

}

【解释】         无

 

【题目编号】         zc-01-101-1045

【知 识 点】         JAVA基础-JAVA语言基础-分支结构-if else

【题目描述】

请写出求 n!的算法,其中要求键盘输入n,并且n<10。

【正确答案】        

public class Factorial {

         public static void main(String[] args) {

                   long n;  //此处定义要输入的数     

             Scanner s = new Scanner(System.in);  //以下三行用于n的值得输入        

             System.out.print( "请输入一个整数: ");  

             n = s.nextInt();     

                   System.out.println(doFactorial(n));

         }

         public static long doFactorial(long n) {

                   if (n < 1 || n>10) {

                            System.out.println("ERROR");

                            return 0;

                   } else if (n == 1 || n == 2) {

                            return n;

                   } else {

                            return n * doFactorial(n - 1);

                   }

         }

}

【解释】         无

 

【题目编号】         zc-01-101-1046

【知 识 点】         JAVA基础-JAVA语言基础-普通数组-数组排序

【题目描述】

编写一个字符界面的 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;

                   }

                   Arrays.sort(arr);

                   System.out.println("最小值:"+arr[0]+",最大值:"+arrr[arr.length-1]);

         }

}

【解释】         无

 

【题目编号】         zc-01-101-1047

【知 识 点】         JAVA基础-JAVA语言基础-排序-选择排序

【题目描述】

写一个排序算法 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]);

                   }

         }

}

【解释】         无

        

【题目编号】         zc-01-101-1048

【知 识 点】         JAVA基础-JAVA语言基础-排序-冒泡排序

【题目描述】

冒泡排序:依次比较相邻的两个数,将大数放在前面,小数放在后面。第一趟结束,在最后的数必是 所有数中的最小数。重复以上过程,直至最终完成排序。由于在排序过程中总是大数往前放,小数往后 放,相当于气泡往上升,所以称作冒泡排序。请用 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;

}

【解释】         无

 

【题目编号】         zc-01-101-1049

【知 识 点】         JAVA基础-JAVA语言基础-分支结构、循环结构

【题目描述】

下面是一个由*号组成的 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("非法行数!");

                   }

         }

}

【解释】         无

【题目编号】         zc-01-101-1050

【知 识 点】         JAVA基础-JAVA语言基础-循环结构-for

【题目描述】

编写一个程序,用来计算 1 到 100 间所有整数的和是多少?

【正确答案】        

public static void GetSum(){

      int sum = 0;

        for(int i=1;i<=100;i++){

               sum+=i;

        }

        System.out.println("和为:"+sum);

 }

【解释】         无

 

【题目编号】         zc-01-101-1051

【知 识 点】         JAVA基础-JAVA语言基础-循环结构-for

【题目描述】

打印出杨辉三角形(编程题)

【正确答案】        

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();

                   }

         }

}

【解释】         无

 

【题目编号】         zc-01-101-1052

【知 识 点】         JAVA基础-JAVA语言基础-循环结构

【题目描述】

下列代码的输出结果是什么?

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

【解释】         无

 

【题目编号】         zc-01-101-1053

【知 识 点】         JAVA基础-JAVA面向对象-普通数组、进制

【题目描述】

现有一个 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面向对象

【题目编号】         zc-01-101-1054

【知 识 点】         JAVA基础-JAVA面向对象-static、抽象类-抽象方法

【题目描述】

Abstract method cannot be static. True orFalse ?

【选项】

         A. True

B. False

【正确答案】         A

【解释】

抽象方法可以在子类中被重写,但是静态方法不能在子类中被重写,静态方法和静态属性与对象是无关的,只与类有关,这与abstract 是矛盾的,所以abstract 是不能被修饰为 static,否则就失去了abstract的意义了。

 

【题目编号】         zc-01-101-1055

【知 识 点】         JAVA基础-JAVA面向对象-重写、父子类

【题目描述】

What will be the output when you compile and execute thefollowing 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 方法。

 

【题目编号】         zc-01-101-1056

【知 识 点】         JAVA基础-JAVA面向对象-static块、父子类

【题目描述】

What will be the output when you compile andexecute 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 astatic method by an instance method

D. Runtime error. Cannot override a staticmethod by an instance method

【正确答案】         C

【解释】

静态方法不能在子类中被重写。

 

【题目编号】         zc-01-101-1057

【知 识 点】         JAVA基础-JAVA面向对象-引用类型数组

【题目描述】

执行完以下代码 int [ ]  x = new    int[25];后,以下哪项说明是正确的(      ):

【选项】

A.    x[24]为 0

B.    x[24]未定义

C.    x[25]为 0

D.    x[0]为空

【正确答案】         A

【解释】

x 属于引用类型,该引用类型的每一个成员是int 类型,默认值为:0

 

【题目编号】         zc-01-101-1058

【知 识 点】         JAVA基础-JAVA面向对象-static-static块

【题目描述】

关于以下 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

【解释】

自由块是类加载的时候就会被执行到的,自由块的执行顺序是按照在类中出现的先后顺序执行。

 

【题目编号】         zc-01-101-1059

【知 识 点】         JAVA基础-JAVA面向对象-static

【题目描述】

关于以下程序代码的说明正确的是(         ):

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.构造方法可以重载

 

【题目编号】         zc-01-101-1060

【知 识 点】         JAVA基础-JAVA面向对象-对象和类-实例方法

【题目描述】

下列哪种说法是正确的()

【选项】

A.实例方法可直接调用超类的实例方法

B.实例方法可直接调用超类的类方法

C.实例方法可直接调用其他类的实例方法

D.实例方法可直接调用本类的类方法

【正确答案】         D

【解释】

A. 实例方法不可直接调用超类的私有实例方法

B. 实例方法不可直接调用超类的私有的类方法

C.要看访问权限

 

【题目编号】         zc-01-101-1061

【知 识 点】         JAVA基础-JAVA面向对象-抽象类-抽象方法

【题目描述】

         下列哪一种叙述是正确的( )

【选项】

A. abstract 修饰符可修饰字段、方法和类

B. 抽象方法的 body 部分必须用一对大括号{ }包住

C. 声明抽象方法,大括号可有可无

D. 声明抽象方法不可写出大括号

【正确答案】         D

【解释】         无

abstract 可以修饰方法和类,不能修饰属性。抽象方法没有方法体,即没有大括号{}

 

【题目编号】         zc-01-101-1062

【知 识 点】         JAVA基础-JAVA面向对象-面向对象概念

【题目描述】

以下关于面向对象概念的描述中,不正确的一项是()。

【选项】

A.在现实生活中,对象是指客观世界的实体

B.程序中的对象就是现实生活中的对象

C.在程序中,对象是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(class)

D.在程序中,对象是一组变量和相关方法的集合

【正确答案】         B

【解释】         无

 

【题目编号】         zc-01-101-1063

【知 识 点】         JAVA基础-JAVA面向对象-对象内存管理-堆栈

【题目描述】

栈是一种(     )

【选项】

A. 存取受限的线性结构

B. 存取不受限的线性结构

C. 存取受限的非线性结构

D. 存取不受限的非线性结构

【正确答案】         A

【解释】

栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。

 

【题目编号】         zc-01-101-1064

【知 识 点】         JAVA基础-JAVA面向对象-对象内存管理-垃圾回收

【题目描述】

下列哪些语句关于内存回收的说明是正确的。

【选项】

A. 程序员必须创建一个线程来释放内存

B. 内存回收程序负责释放无用内存

C. 内存回收程序允许程序员直接释放内存

D. 内存回收程序可以在指定的时间释放内存对象

【正确答案】         B

【解释】

垃圾收集器在一个 Java 程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用 System. gc 方法来"建议"执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。

 

【题目编号】         zc-01-101-1065

【知 识 点】         JAVA基础-JAVA面向对象-接口、抽象类-抽象方法

【题目描述】

Which method must be defined by a class implementing thejava.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,实现类中实现该方法。

 

【题目编号】         zc-01-101-1066

【知 识 点】         JAVA基础-JAVA面向对象-内部类-匿名内部类

【题目描述】

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 online 12.

D. Compilation fails because of an error online 16.

E. Compilation fails because of an error online 17.

【正确答案】         A

【解释】

匿名内部类覆盖 hashCode 方法。

 

【题目编号】         zc-01-101-1067

【知 识 点】         JAVA基础-JAVA面向对象-访问控制

【题目描述】

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 theexhibit.        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 不能是私有的

 

【题目编号】         zc-01-101-1068

【知 识 点】         JAVA基础-JAVA面向对象-继承

【题目描述】

在下面程序的第6行与第7行之间补充下列哪个方法,会导致在编译过程中发生错误?

1)        class Super{

2)                 public float getNum(){

3)                           return 3.0f;

4)                 }

5)        }

6)        pubhc class Sub extends Super{

7)        }

【选项】

A,public    floatgetNum(){return 4.0f;}

B.public    voidgetNum(){}

C.public void getNum(double d){}

D.public double getNum(float d){ return 4.0f;}

【正确答案】         B

【解释】

方法重写的问题。子类中有和父类的方法名相同,但是参数不同,不会出编译错误,认为是子类的特有的方法,但是如果子类中方法和父类的方法名,参数,访问权限,异常都相同,只有返回值类型不同会编译不通过。

 

【题目编号】         zc-01-101-1069

【知 识 点】         JAVA基础-JAVA面向对象-对象和类-实例方法

【题目描述】

关于实例方法和类方法,以下描述正确的是:(        )

【选项】

A. 实例方法只能访问实例变量

B. 类方法既可以访问类变量,也可以访问实例变量

C. 类方法只能通过类名来调用

D. 实例方法只能通过对象来调用

【正确答案】         D

【解释】

A 实例方法可以访问类变量;B 类方法只能访问类变量;C 类方法可以通过对象调用

 

【题目编号】         zc-01-101-1070

【知 识 点】         JAVA基础-JAVA面向对象-接口

【题目描述】

接口是 Java 面向对象的实现机制之一,以下说法正确的是:(    )

【选项】

A.     Java支持多重继承,一个类可以实现多个接口;

B.     Java只支持单重继承,一个类可以实现多个接口;

C.     Java只支持单重继承,一个类只可以实现一个接口;

D.     Java支持多重继承,但一个类只可以实现一个接口。

【正确答案】         B

【解释】

Java 支持单重继承,一个类只能继承自另外的一个类,但是一个类可以实现多个接口。

 

【题目编号】         zc-01-101-1071

【知 识 点】         JAVA基础-JAVA面向对象-接口

【题目描述】

                下列关于 interface 的说法正确的是:(        )

【选项】

A. interface 中可以有 private 方法

B. interface 中可以有 final 方法

C. interface 中可以有 function 实现

D. interface 可以继承其他 interface

【正确答案】         D

【解释】

A. 接口中不可以有 private 的方法

B.接口中不可以有 final 的方法 接口中的方法默认是 publicabstract 的

C.接口中的方法不可以有实现

 

【题目编号】         zc-01-101-1072

【知 识 点】         JAVA基础-JAVA面向对象-访问控制-访问修饰符

【题目描述】

已知 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 成员

 

【题目编号】         zc-01-101-1073

【知 识 点】         JAVA基础-JAVA面向对象-继承-父子类

【题目描述】

以下程序正确的输出是(     )

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.     FatherClassCreate

         ChildClassCreate

         FatherClassCreate

C.     ChildClassCreate

         ChildClassCreate

         FatherClassCreate

D.    ChildClassCreate

         FatherClassCreate

         FatherClassCreate

【正确答案】         A

【解释】

在子类构造方法的开始默认情况下有一句 super();来调用父类的构造方法

 

【题目编号】         zc-01-101-1074

【知 识 点】         JAVA基础-JAVA面向对象-对象和类-构造方法

【题目描述】

给定如下代码,下面哪个可以作为该类的构造函数 (      )

public class Test {

         ?

}

【选项】

A. public void Test() {?}

B. public Test() {?}

C. public static Test() {?}

D. public static void Test() {?}

【正确答案】         B

【解释】

构造方法:与类同名没有返回类型

 

【题目编号】         zc-01-101-1075

【知 识 点】         JAVA基础-JAVA面向对象-抽象类-抽象方法、访问控制-访问修饰符

【题目描述】

从下面四段(A,B,C,D)代码中选择出正确的代码段()

【选项】

A.abstract class Name{

                   privateString name;

                   publicabstract boolean isStupidName(String name) {}

         }

B.public classSomething {

                   voiddoSomething () {

                            privateString s = "";         int l =s.length();

                   }

         }

C.public classSomething {

                   publicstatic void main(String[] args) {

                            Othero = new Other();    newSomething().addOne(o);

                   }

                   publicvoid addOne(final Other o) {

                            o.i++;

                   }

         }

         classOther {

                   publicint i;

         }

D.public classSomething { public int addOne(final int x) { return ++x; }

}

【正确答案】         C

【解释】

A. 抽象方法不能有方法体

B.方法中定义的是局部变量,不能用类成员变量修饰符 private

D.final 修饰为常量,常量的值不能被改变

 

【题目编号】         zc-01-101-1076

【知 识 点】         JAVA基础-JAVA面向对象-继承-instanceof

【题目描述】

类 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 之间没有继承关系不能做强制类型转换。

 

【题目编号】         zc-01-101-1077

【知 识 点】         JAVA基础-JAVA面向对象-抽象类、static、final

【题目描述】

下列关于修饰符混用的说法,错误的是(         ):

【选项】

A. abstract 不能与 final 并列修饰同一个类

B. abstract 类中可以有 private 的成员   

C. abstract 类中可以没有抽象方法

D. static 方法中能处理非 static 的属性

【正确答案】         D

【解释】

静态方法中不能引用非静态的成员

 

【题目编号】         zc-01-101-1078

【知 识 点】         JAVA基础-JAVA面向对象-访问控制-访问修饰符

【题目描述】

给出如下代码:( )

class Test{

private int m;

public static void fun() {

          //some code?

}

}

如何使成员变量 m 被函数 fun()直接访问?()

【选项】

A.将 private int m 改为 protectedint m

B.将 private int m 改为 public intm

C.将 private int m 改为 static intm

D.将 private int m 改为 int m

【正确答案】         C

【解释】

         静态的方法中可以直接调用静态数据成员

 

【题目编号】         zc-01-101-1079

【知 识 点】         JAVA基础-JAVA面向对象-继承-重写

【题目描述】

下述代码的执行结果是

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

【解释】

方法重写返回值类型与父类的一致

 

【题目编号】         zc-01-101-1080

【知 识 点】         JAVA基础-JAVA面向对象-接口

【题目描述】

Which two demonstrate a "has a"relationship(Choose two)?

【选项】

A. public interface Person { }

  publicclass Employee extends Person{ }

B. public interface Shape { }

  publicinterface Rectandle extends Shape { }

C. public interface Colorable { }

  publicclass Shape implements Colorable{ }

D. public class Species{ }

  publicclass Animal{private Species species;} E. interface Component{ }

  classContainer implements Component{

         privateComponent[] children;

  }

【正确答案】         D

【解释】

“has a”是关联关系,关联分双向关联和单向关联,双向关联是 A,B 类分别持有对方的引用(有是对方的属性).单向关联是一方持另一方的引用.

 

【题目编号】         zc-01-101-1081

【知 识 点】         JAVA基础-JAVA面向对象-引用类型数组

【题目描述】

下面哪个是正确的?(   )

【选项】

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

【解释】         无

 

【题目编号】         zc-01-101-1082

【知 识 点】         JAVA基础-JAVA核心API-final

【题目描述】

关于 java.lang.String 类,以下描述正确的一项是(        )

【选项】

A. String 类是 final 类故不可以继承;

B. String 类是 final 类故可以继承;

C. String 类不是 final 类故不可以继承;

D. String 类不是 final 类故可以继承;

【正确答案】         A

【解释】

String 类是 final 的,在 java 中 final 修饰类的不能被继承

 

【题目编号】         zc-01-101-1083

【知 识 点】         JAVA基础-JAVA面向对象-继承-父子类、重写

【题目描述】

下面中哪两个可以在 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,子类重写父类的方法返回值类型要相同或是父类方法返回值类型的子类。

 

【题目编号】         zc-01-101-1084

【知 识 点】         JAVA基础-JAVA面向对象-内部类、static

【题目描述】

Given:

public class OuterClass {

       private double d1 = 1.0; 

       //insert code here

}

You need to insert an inner classdeclaration at line2. Which two inner class declarations are valid? (ChooseTwo)

【选项】

A.     staticclass InnerOne { public double methoda() {return d1;} }

B.     staticclass InnerOne { static double methoda() {return d1;} }

C.     privateclass InnerOne { public double methoda() {return d1;} }

D.     protectedclass InnerOne { static double methoda() {return d1;} }

E.      publicabstract class InnerOne { public abstract double methoda(); }

【正确答案】         CE

【解释】

AB.内部类可以声明为 static 的,但此时就不能再使用外层封装类的非 static 的成员变量; D.非 static 的内部类中的成员不能声明为 static 的,只有在顶层类或 static 的内部类中才可声明 static 成员

 

【题目编号】         zc-01-101-1085

【知 识 点】         JAVA基础-JAVA面向对象-final

【题目描述】

Which two declarations prevent the overriding of a method?(Choose Two)

【选项】

A. final void methoda()    {}

B. void final methoda() {} C. static voidmethoda() {}

D. static final void methoda() {}

E. final abstract void methoda() {}

【正确答案】         AD

【解释】

final 修饰方法,在子类中不能被重写。

 

【题目编号】         zc-01-101-1086

【知 识 点】         JAVA基础-JAVA面向对象-对象和类

【题目描述】

下列说法错误的有()

【选项】

A. 在类方法中可用 this 来调用本类的类方法

B. 在类方法中调用本类的类方法时可直接调用

C. 在类方法中只能调用本类中的类方法

D. 在类方法中绝对不能调用实例方法

【正确答案】         ACD

【解释】

A.在类方法中不能使用 this 关键字 C.在类方法中可以调用其它类中的类方法 D.在类方法中可以通过实例化对象调用实例方法

 

【题目编号】         zc-01-101-1087

【知 识 点】         JAVA基础-JAVA面向对象-对象和类-构造方法

【题目描述】

给出下面的代码段:( )

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 调用本类中其它的构造方法。

 

【题目编号】         zc-01-101-1088

【知 识 点】         JAVA基础-JAVA面向对象-static

【难易程度】        

【题目描述】

下面关于变量及其范围的陈述哪些是不正确的(     ):

【选项】

A. 实例变量是类的成员变量     

B. 实例变量用关键字 static 声明

C. 在方法中定义的局部变量在该方法被执行时创建

D. 局部变量在使用前必须被初始化

【正确答案】         BC

由 static 修饰的变量称为类变量或是静态变量,法加载的时候创建局部变量。

 

【题目编号】         zc-01-101-1089

【知 识 点】         JAVA基础-JAVA面向对象-访问控制

【题目描述】

属性的可见性有(     )

【选项】

A. 公有的  B. 私有的   C. 私有保护的   D. 保护的

【正确答案】         ABD

【解释】

属性的可见性有四种:公有的(public)保护的(protected)默认的        私有的(private)

 

【题目编号】         zc-01-101-1090

【知 识 点】         JAVA基础-JAVA面向对象-访问控制-访问修饰符

【题目描述】

Given:

1. public interface Foo{

2.      int k = 4;

3. }

Which three are equivalent to line 2?

【选项】

A.     finalint k = 4;

B.     publicint k = 4;

C.     staticint k = 4;

D.     privateint k = 4;

E.      abstractint k = 4;

F.      volatileint k = 4;

G.     transientint k = 4;

H.     protectedint k = 4;

【正确答案】         ABC

【解释】

static:修饰的静态变量;final 修饰的是常量;abstract不能修饰变量;

Volatile 修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。 而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

Transient:对不需序列化的类的域使用transient 关键字,以减少序列化的数据量。

int k=4 相当于 public staticfinal int k=4; 在接口中可以不写 static final

 

【题目编号】         zc-01-101-1091

【知 识 点】         JAVA基础-JAVA面向对象-访问控制、接口

【题目描述】

         不能用来修饰 interface 的有()

【选项】

A.private      B.public        C.protected          D.static

【正确答案】         ACD

【解释】

修饰接口可以是 public 和默认

 

【题目编号】         zc-01-101-1092

【知 识 点】         JAVA基础-JAVA面向对象-引用类型数组

【题目描述】             

执行下列代码后,哪个结论是正确的 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。

 

【题目编号】         zc-01-101-1093

【知 识 点】         JAVA基础-JAVA面向对象-引用类型数组

【题目描述】

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];这种写法相当于父类的用指向之类的实例。

 

【题目编号】         zc-01-101-1094

【知 识 点】         JAVA基础-JAVA面向对象-继承-重载和重写

【题目描述】

下面哪几个函数是 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){...}

【正确答案】         AD

【解释】

重载:方法名相同,参数列表不同

 

【题目编号】         zc-01-101-1095

【知 识 点】         JAVA基础-JAVA面向对象-final

【题目描述】

MAX_LENGTH 是 int 型 public 成员变量,变量值保持为常量 100,用简短语句定义这个变量。

【选项】

A .public int MAX_LENGTH=100;                      B. final intMAX_LENGTH=100;

C. final public int MAX_LENGTH=100;             D. public final int MAX_LENGTH=100.

【正确答案】         CD

【解释】

通过题的描述就是定义常量,在 java 中常量命名规范是所有字母都大写用下划线分割每个单词。

 

【题目编号】         zc-01-101-1096

【知 识 点】         JAVA基础-JAVA面向对象-继承-父子类

【题目描述】

Given the folowing classes which of the following willcompile 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;

【正确答案】         ABD

【解释】

b 和 ob 对应的类之间没有任何关系,要想 b=ob 成立要么是父子关系,要么是接口实现类的关系。

 

【题目编号】         zc-01-101-1097

【知 识 点】         JAVA基础-JAVA面向对象-对象和类-类加载

【题目描述】

谈谈对 ClassLoader 的理解?

【正确答案】        

ClassLoader 加载类用的是全盘负责委托机制。所谓全盘负责,即是当一个 classloader 加载一个 Class 的时候,这个 Class 所依赖的和引用的所有 Class 也由这个 classloader 负责载入,除非是显式的使用另外一个 classloader 载入;委托机制则是先让 parent(父)类加载器 (而不是 super,它与 parent classloader 类不是继承关系)寻找,只有在 parent 找不到的时候才从自己的类路径中去寻找。此外类加载还采用了 cache 机制,也就是如果 cache 中保存了这个 Class 就直接返回它,如果没有才从文件中读取和转换成 Class,并存入 cache,这就是为什么我们修改了 Class 但是必须重新启动 JVM 才能生效的原因。

【解释】         无

 

【题目编号】         zc-01-101-1098

【知 识 点】         JAVA基础-JAVA面向对象-对象和类-构造方法

【题目描述】

构造器 Constructor 是否可以被继承?是否可以被 Override?

【正确答案】        

构造器 Constructor 不能被继承,因此不能重写 Overriding,但可以被重载 Overloading。

【解释】         无

 

【题目编号】         zc-01-101-1099

【知 识 点】         JAVA基础-JAVA面向对象-对象和类-面向对象

【题目描述】

面向对象的特征有哪些方面?

【正确答案】

面向对象的特征主要有以下几个方面:

1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。

2)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。

3)封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。

4)多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

【解释】         无

 

【题目编号】         zc-01-101-1100

【知 识 点】         JAVA基础-JAVA面向对象-接口、抽象类

【题目描述】

接口是否可继承接口? 抽象类是否可实现接口? 抽象类是否可继承实体类?

【正确答案】        

接口是可以继承接口的并且可以继承多个其它接口;抽象类可以实现接口中的方法;抽象类可以继承实体类。

【解释】         无

 

【题目编号】         zc-01-101-1101

【知 识 点】         JAVA基础-JAVA面向对象-内部类-匿名内部类

【题目描述】

nonymous Inner Class (匿名内部类) 是否可以 extends(继承)其它类,是否可以 implements(实现)interface(接口)?

【正确答案】        

匿名内部类是可以继承其它类,同样也可以去实现接口的,用法为:

JButton button = new JButton();

button.addActionListener(newActionListener()

{

public void actionPerformed(ActionEvente){//some mothod...}

});

这样的用法在 swing 编程中是经常使用的,就是因为它需要用到注册监听器机制,而该监听类如果只服务于一个组件,那么,将该类设置成内部类/匿名类是最方便的。

【解释】         无

 

【题目编号】         zc-01-101-1102

【知 识 点】         JAVA基础-JAVA面向对象-对象和类-构造方法

【题目描述】

一个 subclass 怎样调用 superclass 中的方法(myMethod)和构造函数?

【正确答案】        

用 super 关键字,子类去调用父类的方法,如:super.myMethod();子类去调用父类的构造函数,如:super();。

【解释】         无

 

【题目编号】         zc-01-101-1103

【知 识 点】         JAVA基础-JAVA面向对象-抽象类、接口

【题目描述】

abstract class 和 interface 有什么区别?

【正确答案】        

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

【解释】         无

 

【题目编号】         zc-01-101-1104

【知 识 点】         JAVA基础-JAVA面向对象-对象和类

【题目描述】

类有哪三个基本特性?各特性的优点?

【正确答案】        

类具有封装性、继承性和多态性。封装性:类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。继承性:类的继承性提供从已存在的类创建新类的机制,继承(inheritance)使一个新类自动拥有被继承类(父类)的全部可继承的成员。多态性:类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。

【解释】         无

 

【题目编号】         zc-01-101-1105

【知 识 点】         JAVA基础-JAVA面向对象-访问控制、重载和重写

【题目描述】

java 语言中 public、private、protected 三个关键字的用法,重写和重载的区别。

【正确答案】        

作用域

public

×

×

×

重写:发生在父子类之间,方法名相同,参数的类型、个数、顺序相同,返回值相同,访问权限不能更封闭,抛出异常不能宽泛;重载:发生在同一个类中,方法名相同,但是参数不同(类型不同或个数不同或参数的顺序不同),返回值可以不相同。

【解释】         无

 

【题目编号】         zc-01-101-1106

【知 识 点】         JAVA基础-JAVA面向对象-反射

【题目描述】

Java 反射机制的作用? Java 反射机制的作用是:

【正确答案】        

1)在运行时判断任意一个对象所属的类。

2)在运行时构造任意一个类的对象。

3)在运行时判断任意一个类所具有的成员变量和方法。

4)在运行时调用任意一个对象的方法

【解释】         无

 

【题目编号】         zc-01-101-1107

【知 识 点】         JAVA基础-JAVA面向对象-static、final

【题目描述】

关键字 final 分别修饰一个类,一个方法,一个变量,各起什么作用

【正确答案】        

final 修饰类是不能被继承

fianl 修饰方法不能在子类中被覆盖。

final 修饰变量,称为常量,初始化以后不能改变值。

【解释】         无

 

【题目编号】         zc-01-101-1108

【知 识 点】         JAVA基础-JAVA面向对象-对象内存管理-垃圾回收

【题目描述】

什么是垃圾回收?什么时候触发垃圾回收?如何降低垃圾回收的触发频率?它能保证程序有足够的可用内存吗?

【正确答案】        

【解释】

垃圾回收(GC)是 Java 语言的一个重要特性,作用是释放不再被使用的内存。垃圾回收由系统进行管理。在系统认为需要的时候自动启动一个线程进行处理。尽量减少垃圾内存,也就是新建对象的数量,可以降低垃圾回收的频率。垃圾回收机制无法保证有足够的内存。

 

【题目编号】         zc-01-101-1109

【知 识 点】         JAVA基础-JAVA面向对象-final

【题目描述】

是否可以继承 String 类

【正确答案】        

不可以。因为 String 类有 final 修饰。

【解释】         无

 

【题目编号】         zc-01-101-1110

【知 识 点】         JAVA基础-JAVA面向对象-对象和类-方法调用

【题目描述】

编写代码实现同一平面内两圆是否碰撞,其中: 第一个圆圆心坐标为(x1,y1),半径是 r1,第二个圆圆心坐标为(x2,y2),半径是 r2。

方法声明如下:

boolean collisWith(int x1,int y1,int r1,intx2,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;

}

【解释】         无

【题目编号】         zc-01-101-1111

【知 识 点】         JAVA基础-JAVA面向对象-对象和类

【题目描述】

创建类 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;

         }

}

【解释】         无

                           

【题目编号】         zc-01-101-1112

【知 识 点】         JAVA基础-JAVA面向对象-引用类型数组

【题目描述】

类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;

               }

         }

}

【解释】         无

 

【题目编号】         zc-01-101-1113

【知 识 点】         JAVA基础-JAVA面向对象-对象和类-类的编写

【题目描述】

定义一个学生类, 需要有姓名, 年龄, 考试成绩三个成员属性. 属性(成员变量)需要私有并提供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;

         }

}

【解释】         无

 

【题目编号】         zc-01-101-1114

【知 识 点】         JAVA基础-JAVA面向对象-对象和类-类的编写

【题目描述】

编写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);

         }

}

【解释】         无

 

【题目编号】         zc-01-101-1115

【知 识 点】         JAVA基础-JAVA面向对象-反射、普通数组

【题目描述】

用反射机制声明长度为 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]);       

                     }   

           }

}

【解释】无

 

【题目编号】         zc-01-102-1116

【知 识 点】         JAVA基础-JAVA面向对象-内部类、static-static块

【题目描述】

                请阅读如下代码,请问答以下三条打印语句输出的结果是什么?

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

【解释】         无

 

【题目编号】         zc-01-101-1117

【知 识 点】         JAVA基础-JAVA面向对象-继承

【题目描述】

有 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();

    Catcat = whiteCat;

         cat.showColor();cat.showCatColor();

B.     Catcat = new Cat();

         WhiteCatwhiteCat = (WhiteCat) cat;

         cat.showColor();

         cat.showCatColor();

C.     Catcat = new WhiteCat();

         WhiteCatwhiteCat = (WhiteCat) cat;

         cat.showColor();

         cat.showCatColor();

【正确答案】        

A 段执行的结果是: Cat:randomWhiteCat:white

B 段执行的结果是:会抛出java.lang.ClassCastException 异常

C 段执行的结果是: Cat:randomWhiteCat:white

【解释】         无

 

【题目编号】         zc-01-101-1118

【知 识 点】         JAVA基础-JAVA面向对象-final、普通数组

【难易程度】         40

【题目描述】

判断下列语句是否正确,如果有错误,请指出错误所在?

void foo(final int []arg){

         if (arg.length > 1)

         arg[0] = 5;

}

【正确答案】        

         正确

【解释】         无

 

【题目编号】         zc-01-101-1119

【知 识 点】         JAVA基础-JAVA面向对象-对象和类

【题目描述】

判断下列语句是否正确,如果有错误,请指出错误所在?

interface A{

         int add(final A a);

}

class B implements A{

         long add(final A a){

                   return this.hashCode() + a.hashCode();

         }

}

【正确答案】        

         错,返回值不是 long 类型

【解释】         无

 

【题目编号】         zc-01-101-1120

【知 识 点】         JAVA基础-JAVA面向对象-继承、static-static块

【题目描述】

指出下面程序的运行结果:

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

【解释】         无    

 

【题目编号】         zc-01-101-1121

【知 识 点】         JAVA基础-JAVA面向对象-内部类

【题目描述】

下列程序运行的结果是

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

【解释】         无

 

【题目编号】         zc-01-101-1122

【知 识 点】         JAVA基础-JAVA面向对象-继承

【题目描述】

请看下列程序,运行结果是

class Super{

         int i=10;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值