Fork me on GitHub

Java基础题

1、下面哪个是Java语言中正确的标识符(B
A、3com    B、import    C、that    D、this

标识符是以字母开头的字母数字序列。字母通常指大小写英文字母,下划线_、美元符&等,也可以是Unicode字符集中的字符,如汉字等;数字通常指0-9,可以是字母数字的任意组合但不能包含(如+-)等,不能使用关键字但长度不受限制。

2、下面哪个语句(初始化数组)是不正确的(B
A、int x[]={1,2,3};    B、int x[3]={1,2,3}
C、int[] x={1,2,3};    D、int x[]= new int[]{1,2,3};

int x[]={1,2,3};数组直接赋初值可以不标数组元素个数,会根据后面赋值个数自动分配空间。
int[] x={1,2,3};这种方式等价于使用new来进行存储空间分配,即:int x[]= new int[]{1,2,3};

3、下述概念中不属于面向对象方法的是(D
A、对象    B、继承、多态    C、类、封装    D、过程调用

面向对象=对象+类+继承+通过消息的通信
对象: 一组属性及其上的操作的封装体
: 一组有相同属性和操作的对象的集合
继承: 一个类为另一个类上的扩充的方式,子类继承父类,主要目的是代码服用
消息: 对象间通信的手段

4、下面的代码段中,执行之后,i和j的值是什么?(B

1
2
int i= 1; int j;
j= i++* 2+ 3* --i;

A、1,2    B、1,5    C、2,1    D、2,2

i++: 先运算再赋值,例如: a= i++,先运算a= i;再运算i= i+ 1;所以结果是a= 1;
--i: 先赋值再运算,例如: a= –i;先运算i= i- 1;再运算a= i,所以结果是a= 2;
本题中i++* 2+ 3* --i也可写为1* 2+ 3* 1

5、java.lang包的()方法比较两个对象是否相等,相等返回 true。(B
A、toString()    B、equals()    C、compare()    D、全错

toString: 返回该对象的字符串表示。
equals: 此方法一般用于比较的是对象的内容但是也有的情况下也会去比较两个对象的地址。
compare(): 此方法可以用来比较 两个基本类型值的大小,同时也可以用来比较两个Boolean类型值。

6、使用 ___()方法可以获得 Calendar类的实例(D
A、get()    B、equals()    C、getTime()    D、getInstance()

Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象,getInstance方法返回一个Calendar对象(该对象为Calendar的子类对象)

7、给出下面代码:

1
2
3
4
5
6
public class Person{
static int arr[]= new int[10];
public static void main(String a[]){
System.out.println(arr[1]);
}
}

下面哪个语句是正确的?(B
A、编译时将产生错误;    B、输出零;
C、编译时正确,运行时将产生错误;    D、输出空

arr[]为整型数组,分配地址后默认值为0,所以创建数组时也是对每个数组元素赋初值0。

8、下面关于java中类的说法哪个是不正确的 ?(C
A、类体中只能有变量定义和成员方法的定义,不能有其他语句。
B、构造函数是类中的特殊方法。
C、类一定要声明为 public 的,才可以执行。
D、一个 java文件中可以有多个 class定义。

class前的修饰符是用来控制访问权限的,public表示在任何包里都可访问,protected表示同一包和子类可访问,package(缺省不写时就是这个)表示在同一包内可访问,private表示只有当前类可访问。

9、在 Java中如果要在字符串类型对象 s=“ JAVA”,中找出, V出现的
位置可使用下面哪个方法:(C
A、mid(2, s);    B、charAt(2);      C、s.indexOf(“V”);     D、indexOf(s, V);

mid(): 从一个字符串中截取出指定数量的字符。
charAt(): 返回指定索引位置的char值。检索范围是0~length()-1
indexOf(): 返回某个指定的字符串值在字符串中首次出现的位置。

10、A 派生出子类 B, B 派生出子类 C,并且在 Java源代码中有如下
声明:
1) A a0=new A();
2) A a1=new B();
3) A a2=new C();
问以下哪个说法是正确的?(D
A、只有第 1 行能通过编译
B、第 1、 2 行能通过编译,但第 3 行编译出错
C、第 1、 2、 3 行能通过编译,但第 2、 3 行运行时出错
D、第 1 行、第 2 行和第 3 行的声明都是正确的

子类继承父类的所有属性和方法,B为A的子类,用A可以去实例B;C为B的子类,用B去实例C,也可以;间接的,C也是A的子类,可以用A去实例C

11、下面说法正确的是(A
A、final可修饰类、属性、方法。
B、abstract可修饰类、属性、方法
C、定义抽象方法需有方法的返回类型、名称、参数列表和方法体。
D、用final修饰的变量,在程序中可对这个变量的值进行更改。

final为最终的 可以修饰类、属性、方法。
abstract为抽象的 可以修饰类、方法,但是不能修饰属性。
定义抽象方法不能有方法体。
既然final为最终的,就不能更改。

12、Java中main()函数的值是什么?(D
A、String    B、int    C、char    D、void

13、已知表达式 int m[] = {0, 1, 2, 3, 4, 5, 6 }; 下面表达式的
值与数组下标量总数相等。(B
A、m.length()    B、m.length- 1     C、m.length()+ 1    D、m.length+ 1

数组的下标是从0开始的,所以数组下标最大为6。而m.length得值为7,所以m.length- 1
length用于求String字符串数组的长度;length()用于求String字符串对象的长度。

14、以下(C)方法用于定义线程的执行体。
A、start()    B、init()    C、run()    D、main()

run()方法是用来定义这个线程在启动的时候需要做什么。但是,直接执行run()方法那就不是线程,必须使用start()启动,那样才是线程。

15、当浏览器返回到新URL的包含applet 的页面时调用以下哪个函数(B
A、init()    B、start()    C、stop()    D、destory()

16、下列方法与Applet显示无关的是(D
A、paint    B、update    C、repaint()    D、draw

Applet显示相关的方法主要有3个。paint()方法,具体执行Applet的绘制,定义为: public void paint(Graphics g)update()方法,定义为: public void update(Graphics g),主要用于更新Applet的显示。repaint()方法,定义为: public void repaint(),主要用于Applet的重新显示,它调用update()方法实现对Applet的更新。而draw()方法与显示无关。

17、请问如下(D)方法可以将 MenuBar 加入 Frame 中。
A、setMenu()    B、setMenuBar()    C、add()    D、addMenuBar()

18、下面(B、E)不是Java中的容器。
A、ScrollPane    B、Canvas    C、Dialog    D、Applet    E、Scrollbar

Canvas只是画布,是游戏中所有UI组件的”容器”。Scrollbar是滚动条,它是一个构件。
常用的容器由Frame(窗口容器),Panel(画板容器),Applet(Java小程序的容器),Dialog(对话框容器)等。

19、下面的程序段创建了 BufferedReader 类的对象in,以便读取本机d盘my 文件夹下的文件1.txt。File构造函数中正确的路径和文件名的表示是 (C)。

1
2
3
File f=new File( 填代码处 );
file=new FileReader(f);
in=new BufferedReader(file);

A、”1.txt”    B、”d:\my\1”     C、”d:\my\1.txt”    D、”my\1.txt”

20、有整型数组:int[] x={12,35,8,7,2};, 则 调 用 方 法
Arrays.sort(x) 后,数组 x 中的元素值依次是(A
A、2 7 8 12 35    B、12 35 8 7 2
C、35 12 8 7 2    D、8 7 12 35 2

21、下面(A)赋值语句是不合法的。
A 、float a= 2.0    B、double b = 2.0
C、int c = 2    D、long d = 2L

22、下面(C)语句不是创建数组的正确语句。
A、float f[][] = new float[6][6];
B、float []f[] = new float[6][6];
C、float f[][] = new float[][6];
D、float [][]f = new float[6][6];
E、float f[][] = new float[6][];
F、float [][]f = new float[6][];

行不能为空

23、Java中如下(A、B、C)约束符是正确的。
A、private    B、public    C、protected    D、protect    E、final

24、下面(C、D)事件监听器在Java中没有事件适配器。
A、MouseListener
B、KeyListener
C、ActionListener
D、ItemListener
E、WindowListener

这两个借口中都只有一个abstract方法。java中只要该接口中包含了两个或以上abstract方法的接口都有适配器。
Java语言为一些Listener接口提供了适配器(Adapter)类。可以通过继承事件所对应的Adapter类,重写重要的方法,无关方法不用实现。
java.awt,enent包中定义的事件适配器类包括以下几个:
1、ComponentAdapter,构件适配器。
2、ContainerAdapter,容器适配器。
3、FocusAdapter,焦点适配器。
4、KeyAdapter,键盘适配器。
5、MouseMotionAdapter,鼠标运动适配器。
6、MouseAdapter,鼠标适配器。
7、WindowAdapter,窗口适配器。

25、已知如下的命令执行java MyTest a b c,(C、D)语句是正确的。
A、 args[0] = “MyTest a b c”
B、 args[0] = “MyTest”
C、 args[0] = “a”
D、 args[1]= ‘b’

26、下列特点中,(A)是Java虚拟机执行的特点之一。
A、字节代码    B、多进程    C、静态链接    D、编译

Java语言的执行模式是半编译和半解释型。Java编写好的程序首先由编译器转换为标准字节代码,然后由Java虚拟机去解释执行。字节代码也是一种二进制文件,但不能直接在操作系统上运行,它可看作虚拟机的机器码。虚拟机把字节代码程序与各操作系统和硬件分开,使Java程序独立于平台。

27、对于catch字句的排列,下列(A)是正确的。
A、父类在先,子类在后    B、子类在先,父类在后
C、有继承关系的异常不能在同一个try程序段内
D、先有子类,其他如何排列都无关

在Java中提供了结构化的异常处理功能,其主要是通过try...catch语句来实现的。在Java中可以将可能产生异常的代码放入到try子句中,如果产生异常,将会执行catch子句。如果有多个异常,则应先处理父类异常,再处理子类异常,否则后面的异常处理,将得不到执行。

28、以下(B)表达式是不合法的。
A、String x=”Hello”; int y=9; x+=y;
B、String x=”Hello”; int y=9; if(x==y) { }
C、String x=”Hello”; int y=9; x=x+y;
D、String x=null; int y=(x!=null)&&(x.length()>0) ? x.length() : 0

Java对”+”进行了扩展,不仅可以连接字符串,而且还能将字符串与其他类型数据进行连接,结果是字符串。
若”+”的第一个操作数是字符串,Java会自动将后面的操作数类型转换成字符串类型。例如本题选项A中,x+= y即x= x+ y,则计算结果x的值为字符串Hello9;选项C与此类似,故此选项也是正确的;选项D主要考查的是条件运算符”?:”,即把表达式(x!=null)&&(x.length()>0) ? x.length() : 0的值赋给整型变量y,运算结果y的值是0;而选项B是因为==两边的类型不匹配,无法比较,所以此表达式是错误的。

29、在程序读入字符文件时,能够以该文件作为直接参数的类是(A)。
A、FileReader    B、BufferedReader
C、FileInputStream    D、ObjectInputStream

FileReader、BufferedReader是字符类输入流。FileInputStream是字节输入流。对象串行化时,需要使用ObjectInputStream类中提供的方法从对象流中读取对象。所以,在程序读入字符文件时,要使用字符流FileReader或BufferedReader。但是FileReader的参数是读入的文件,而BufferedReader的参数是FileReader流的一个对象。

30、在Java中,线程是(B)。
A、分时的    B、抢占式的
C、非抢占式的    D、非分时的

Java的线程调度策略是一种基于优先级的抢占式调度。Java这种抢占式调度可以是分时的,即每个等待池中的线程轮流执行,也可以不是,即线程逐个运行。具体待用哪种方式,由具体JVM而定。线程一般通过使用sleep()等方法保证其他线程运行时间。

31、数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的(C)。
A.需求分析阶段
B.逻辑设计阶段
C.概念设计阶段
D.物理设计阶段

E-R图是E-R模型的一种非常直观的图的形式表示,它描述信息结构但不涉及信息在计算机中的表示,它是数据库概念设计阶段的工具。

32、下列关于Java布尔类型的描述中,正确的是(A)。
A.一种基本的数据类型,它的类型名称为boolean
B.用int表示类型
C.其值可以赋给int类型的变量
D.有两个值,1代表真,0代表假

Java语言中boolean型数据只有两个值:true(真)和false(假)。它不对应任何数值,也不能与数字进行相互转换。

33、在文件类提供的方法中,用于创建目录的方法是(A)。
A.mkdir()    B.mkdirs()
C.list()    D.listRoots()

mkdir()是为目录操作提供的方法,用来创建目录;mkdirs()也是为目录操作提供的方法,创建包含父目录的目录;list()是对文件名操作提供的方法,返回一个字符串数组,为该文件所在目录下的所有文件名列表;listRoots是为目录提供的方法,返回根目录结构。

34、下列能够正确创建线程的方法是(D)。
Ⅰ.继承java.1ang.Thread类,并重写run()方法
Ⅱ.继承java.1ang.Runnable类,并重写start()方法
Ⅲ.实现java.1ang.Thread接口,并实现run()方法
IV.实现java.1ang.Runable接口,并实现run()方法
A、I,Ⅲ    B、Ⅱ,IV
C、Ⅱ,Ⅲ    D、I,IV

用Thread类的构造方法Thread(Runnabletarget)创建线程对象时,构造方法中的参数必须是一个具体的对象,该对象称作线程的目标对象,创建目标对象的类必须要实现Runnable接口。

35、下列有关数组的叙述中,错误的是(A)。
A、在同一个环境下,数组与内存变量可以同名,两者互不影响
B、可以用一维数组的形式访问二维数组
C、在可以使用简单内存变量的地方都可以使用数组元素
D、一个数组中各元素的数据类型可以相同,也可以不同

整个数组的数据类型为A(Array),而各个数组元素可以分别存放不同类型的数据。在使用数组和数组元素时,应注意如下问题:1) 在任何能使用简单内存变量的地方都可以使用数组元素;2) 在同一个环境下,数组名不能与简单变量名重复;3) 可以用一维数组的形式访问二维数组。

36、下列关于构造方法的叙述中,错误的是(C)。
A、Java语言规定构造方法名与类名必须相同
B、Java语言规定构造方法没有返回值,但不用void声明
C、Java语言规定构造方法不可以重载
D、Java语言规定构造方法只能通过new自动调用

构造方法是类中的一种特殊方法,是为对象初始化操作编写的方法,用它来定义对象的初始状态。构造方法名必须与类名相同,它没有返回值,用户不能直接调用它,只能通过new自动调用。构造方法具有下列特点:①因为构造方法与类名必须相同,所以方法首字母小写规则对它不适用。②构造方法是给对象赋初值,所以没有返回值,但不要void来声明。③构造方法不能被程序调用。④构造方法可由编程人员在类中定义,默认时由Java语言自动生成。⑤构造方法可以重载实现不同的初始化方法,调用时按参数决定调用哪个方法。

37、用来导入已定义好的类或包的语句是(B)。
A、main
B、import
C、public class
D、ClaSS

Java中使用import语句来导入已定义好的类或包,需要注意Java语言的java.1ang包是编译器自动导入的,编程时如果使用该包中的类,可省去import导入,如果要使用其他包中的类,必须用import导入。

38、Java程序的执行过程中用到一套JDK工具,其中java.exe是指(B
A、Java文档生成器
B、Java解释器
C、Java编译器
D、Java类分解器

javac是编译器,Java是运行Java程序的,也就是启动虚拟机,把.class字节码文件解释成机器码,然后运行

39、Java编程所必须的默认引用包为(A
A、java.sys包
B、java.lang包
C、java.new包
D、以上都不是

40、定义一个类名为“ MyClass.java ”的类,并且该类可被
一 个 工 程 中 的 所 有 类 访 问 , 那 么 该 类 的 正 确 声 明 应
为(C
A、private class MyClass extends Object
B、class MyClass extends Object
C、public class MyClass
D、private class MyClass extends Object

41、Java程序经常用到”递归”,”递归”的基本思想是(C
A、”让别人反复调用自己”
B、”自己反复调用别人”
C、”自己反复调用自己”
D、以上说法都不对

42、Applet类的直接父类是(D
A、Component类
B、Container类
C、Frame类
D、Panel类

43、Frame的默认的布局管理器是下列哪一个(B
A、FlowLayout    B、BorderLayout
C、GridLayout    D、CardLayout

44、下列说法不正确的是(C
A、IOException 必须被捕获或抛出
B、java 语言会自动初始化变量的值
C、java 语言不允许同时继承一个类并实现一个接口
D、java 语言会自动回收内存中的垃圾

45、下面的说法正确的是(A、B、C、D)。
A、Java 语言是面向对象的、解释执行的网络编程语言。
B、Java 语言具有可移植性,是与平台无关的编程语言。
C、Java 语言可对内存垃圾自动收集。
D、Java 语言编写的程序虽然是“一次编译,到处运行” ,但必须要 java 的运行环境。

46、定义变量如下:

1
2
3
4
char c= 'w';
int i= 8;
long l= 15;
float f= 8.9f;

以下赋值语句不正确的是(B、C
A、i= c+ i;
B、c= c+ i;
C、l= f+ l;
D、f= i+ l+ f;

double> float> long> int> short> char

47、下列哪一种叙述是正确的(D
A、abstract 修饰符可修饰字段、方法和类
B、抽象方法的 body 部分必须用一对大括号{ }包住
C、声明抽象方法,大括号可有可无
D、声明抽象方法不可写出大括号

abstract不能修饰字段。既然是抽象方法,当然是没有实现的方法,根本就没有body部分。

48、下列说法正确的有 (C
A、class 中的 constructor 不可省略
B、constructor 必须与 class 同名,但方法不能与 class同名
C、constructor 在一个对象被 new 时执行
D、一个 class 只能定义一个 constructor

1
2
3
4
5
6
7
8
9
10
11
12
见代码,很明显方法是可以和类名同名的,和构造方法唯一的区别就是,构造方法没有返回值。
public long1_1() {
System.out.println("1");
}
public void long1_1() {
System.out.println("2");
}
public static void main(String a[]){
long1_1 aLong1_1= new long1_1();
System.out.println("3");
aLong1_1.long1_1();
}

输出结果为:

1
3
2

49、下列关于修饰符混用的说法,错误的是(D
A、abstract不能与 final 并列修饰同一个类
B、abstract类中不可以有 private 的成员
C、abstract方法必须在 abstract 类中
D、static 方法中能处理非 static 的属性

50、(B)修饰符允许对类成员的访问不依赖于该类的任何对象
A、 abstract
B、 static
C、 return
D、 public

51、关于被私有访问控制符private修饰的成员变量,以下说法正确的是(C
A、可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B、可以被两种类访问和引用:该类本身、该类的所有子类
C、只能被该类自身所访问和修改
D、只能被同一个包中的类访问

52、下面的集合中,(C)不可以存储重复元素。
A、Set
B、Collection
C、Map
D、List

53、关于 Map 和 List,下面说法正确的是(D)。
A、Map 继承 List
B、List 中可以保存 Map 或 List
C、Map 和 List 只能保存从数据库中取出的数据
D、Map 的 value 可以是 List 或 Map

54、给定Java代码如下,编译运行后,结果是(B

1
2
3
4
5
6
7
public class long1_1{
static String string;
public static void main(String[] args) {
char c= string.charAt(0);
System.out.println(c);
}
}

A、编译错误
B、运行期异常,异常类型为NullPointerException
C、运行期异常,异常类型为ArithmeticException
D、正确运行,但无输出内容

55、给定Java代码如下,关于super的用法,以下描述正确的是(C

1
2
3
4
5
class C extends B{
public C() {
super();
}
}

A、用来调用类B中定义的super()方法
B、用来调用类C中定义的super()方法
C、用来调用类B的无参构造方法
D、用来调用类B中第一个出现的构造方法

56、给定Java代码如下,编译运行,结果是(A

1
2
3
4
5
6
public class long1_1{
public static void main(String[] args) {
int i;
System.out.println("i= "+ i);
}
}

A、编译错误
B、运行时出现例外
C、正常运行,输出i= -1;
D、正常运行,输出i= 0;

编译一下会出现这个错误The local variable i may not have been initialized。意思是没有对该变量进行初始化。

57、下面的Java代码,当x= 2时,运行结果是(C

1
2
3
4
5
6
7
8
9
switch (x) {
case 1:
System.out.println(1);
case 2:
case 3:
System.out.println(3);
case 4:
System.out.println(4);
}

A、没有输出任何结果
B、输出结果为3
C、输出结果是3和4
D、输出结果是1、3和4

58、分析如下Java代码片段,输出结果为(A

1
2
3
4
5
6
7
8
9
10
11
int money= 0;
int price= 10;
int number= 0;
for(int i= 0; i< 2; i++) {
number++;
//System.out.println(number);
--price;
//System.out.println(price);
money+= number* price;
}
System.out.println(money);

A、25    B、28
C、31    D、30

59、给定如下Java代码,编译运行时,结果是(C

1
2
3
4
public static void main(String[] args) {
String string= "123456789";
System.out.println(string.indexOf("5"));
}

A、6    B、5    C、4    D、-1

60、下列哪一个操作不能使线程从等待阻塞状态进入对象阻塞状态(D
A、等待阻塞状态下的线程被notify()唤醒
B、等待阻塞状态下的纯种被interrput()中断
C、等待时间到
D、等待阻塞状态下的线程调用wait()方法

61、在Java中,下列(D)类不能派生出子类。
A、public class MyClass{}
B、class MyClass{}
C、abstract class MyClass{}
D、final class MyClass{}

62、在Java中,要判断D盘下是否存在文件abc.txt,应该使用以下(C)判断语句。
A、if(new File(“d:abc.txt”).exists()== 1)
B、if(File.exists(“d:abc.txt”)== 1)
C、if(new File(“d:/abc.txt”).exists())
D、if(File.exists(“d:/abc.txt”))

63、在Java中,关于HashMap类的描述,以下说法错误的是(B
A、HashMap使用键/值的形式保存数据
B、HashMap能够保证其中元素的顺序
C、HashMap允许将null用作键
D、HashMap允许将null用作值

64、在Java中,下面关于变量及其作用域的描述错误的是(A、B
A、实例变量是存放在方法区中
B、实例变量用关键字static声明
C、在方法中定义的局部变量在该方法被执行时创建
D、局部变量在使用前必须被初始化

对象的所有数据成员都在堆中。实例变量在栈中,实例在堆中。
定义该成员变量时没有使用static修饰,该成员变量又被称为非静态变量或实例变量;如果使用了static修饰,则该成员变量又可被称为静态变量或类变量。

65、给定Java代码,如下:

1
2
3
abstract class Shape{
abstract void draw();
}

要创建Shape类的子类Circle,以下代码正确的是(B、D
A、class Circle extends Shape{int draw(){}}
B、abstract class Circle extends Shape{}
C、class Circle extends Shape{void draw()}
D、class Circle extends Shape{void draw(){}}

66、给定一个Java程序的方法结构如下,以下方法体实现语句正确的是(B、C

1
2
public Integer change(int i){
}

A、Integer int= new Integer(i); return int;
B、Integer t= Integer.valueOf(i); return t;
C、return new Integer(i);
D、return i;

67、给定一段Java代码如下,要打印出list中存储的内容,以下语句正确的是(A、B

1
2
3
4
ArrayList list= new ArrayList();
list.add("a");
list.add("b");
Iterator iterator= list.iterator();

1
2
3
4
A、
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
1
2
3
4
B、
for(int i= 0; i< list.size(); i++) {
System.out.println(list.get(i));
}
1
2
3
4
C、
while(list.hasNext()) {
System.out.println(list.next());
}
1
2
3
4
D、
for(int i= 0; i< list.size(); i++) {
System.out.println(iterator(i));
}

68、在Java中,下面(C、D)是不合法的声明。
A、short x[]
B、short[] y
C、short[5] x2
D、short z2[5]

69、以下(B、C)不是Java的原始数据类型。
A、short
B、Booleam
C、unit
D、float

Java的原始数据类型一共就8个,分别是: byteshortintlongbooleancharfloatdouble。注意这些都是大小写敏感的,而Booleanmboolean的封装类(Wrapper class)。

70、给定如下Java代码,编译运行时,以下(A、C)语句的值是true。

1
2
3
4
String string= "Hello";
String t= "Hello";
String e= new String("Hello");
char c[]= {'H', 'e', 'l', 'l', 'o', "G"};

A、string.equals(t);
B、t.equals(c);
C、t.equals(e);
D、t== c;

==操作符所比较的是操作符两端的操作数是否是同一个对象,而String`equals()方法所比较的是两个String对象的内容是否一样,其参数是一个String对象时才有可能返回true,其他对象都返回false。
定义char时候,字符必须用单引号,字符串用双引号。例如,在char c= ‘a’中,’a’是字符常量,必须用单引号。”a”表示字符串,包含两个字符,一个是’a’,一个是’\0’。

71、在Java中,下面关于抽象类的描述正确的是(B、D
A、抽象类可以被实例化
B、如果一个类中有一个方法被声明为抽象的,那么这个类必须是抽象类
C、抽象类中的方法必须都是抽象的
D、声明抽象类必须带有关键字abstract

72、以下代码运行输出的是(C

1
2
3
4
5
6
7
8
9
10
11
12
class Person{
private String name= "Person";
int age= 0;
}
public class long1_1 extends Person{
public String grade;
public static void main(String[] args) {
Person person= new Person();
System.out.println(person.name);
}
}

A、输出: Person
B、没有输出
C、编译错误
D、运行出错

73、在使用 super 和 this关键字时,以下描述正确的是(A
A、在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B、super()和this()不一定要放在构造方法内第一行
C、this()和super()可以同时出现在一个构造函数中
D、this()和super()可以在static环境中使用,包括static方法和static语句块

1、调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
2、super()和this()类似。区别是:super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
3、super()和this()均需放在构造方法内第一行。
4、尽管可以用this()调用一个构造器,但却不能调用两个。
5、this()和super()不能同时出现在一个构造函数里面,因为this()必然会调用其它的构造函数,其它的构造函数必然也会有super()语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
6、this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
7、从本质上讲,this()是一个指向本对象的指针,然而super()是一个Java关键字。

74、以下对封装的描述正确的是(D
A、只能对一个类中的方法进行封装,不能对属性进行封装
B、如果子类继承了父类,对于父类中进行封装的方法,子类仍然可以直接调用
C、封装的意义不大,因此在编码时尽量不要使用
D、封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性

75、以下对继承的描述错误的是(A
A、Java 中的继承允许一个子类继承多个父类
B、父类更具有通用性,子类更具体
C、Java 中的继承存在着传递性
D、当实例化子类时会递归调用父类中的构造方法

76、Java提供哪几种运算符(A、B、C、D
A、算数运算符
B、位运算符
C、关系运算符
D、逻辑运算符
E、条件运算符

77、以下说法错误的是(D
A. super.方法()可以调用父类的所有非私有方法
B. super()可以调用父类的所有非私有构造函数
C. super.属性可以调用父类的所有非私有属性
D. this和super关键字可以出现在同一个构造函数中

78、访问修饰符作用范围由大到小是(D
A、private-default-protected-public
B、public-default-protected-private
C、private-protected-default-public
D、public-protected-default-private

79、多态的表现形式有(A
A、重写
B、抽象
C、继承
D、封装

80、以下对重载描述错误的是(B) overload(重载 ) override(重写)
A、方法重载多发生在一个类的内部
B、构造方法不能重载
C、重载要求方法名相同,参数列表不同
D、方法的返回值类型不是区分方法重载的条件

81、以下对抽象类的描述正确的是(C
A、抽象类没有构造方法
B、抽象类必须提供抽象方法
C、有抽象方法的类一定是抽象类
D、抽象类可以通过 new 关键字直接实例化

82、以下对接口描述错误的有(D
A、接口没有提供构造方法
B、接口中的方法默认使用 public、 abstract 修饰
C、接口中的属性默认使用 public、 static、 final 修饰
D、接口不允许多继承

83、以下代码,描述正确的有(A

1
2
3
4
5
6
7
8
9
10
11
interface IDemo{
public static final String name; //1
void print(); //2
public void getInfo(); //3
}
abstract class long1_1 implements IDemo{ //4
public void print() {
}
}

A、第1行错误,没有给变量赋值
B、第2行错误,方法没有修饰符
C、第4行错误,没有实现接口的全部方法
D、第3行错误,没有方法的实现

84、以下描述错误的有(C
A、abstract 可以修饰类、接口、方法
B、abstract 修饰的类主要用于被继承
C、abstract 可以修饰变量
D、abstract 修饰的类,其子类也可以是 abstract修饰的

85、以下描述正确的有(B
A、方法的重写应用在一个类的内部
B、方法的重载与返回值类型无关
C、构造方法不能重载
D、构造方法可以重写

86、以下对异常的描述不正确的有(C
A、异常分为 Error 和 Exception
B、Throwable 是所有异常类的父类
C、Exception 是所有异常类父类
D、Exception 包括 RuntimeException 和 RuntimeException 之外的异常

87、下面代码的运行结果是(B

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class long1_1{
public int add(int a, int b) {
try {
return a+ b;
}catch (Exception e) {
// TODO: handle exception
System.out.println("catch语句块");
}finally {
System.out.println("finally语句块");
}
return 0;
}
public static void main(String[] args) {
long1_1 long1_1= new long1_1();
System.out.println("和是: "+ long1_1.add(9, 34));
}
}

A、编译异常
B、finally语句块和是: 43
C、和是: 43finally语句块
D、catch语句块和是: 43

88、以下对自定义异常描述正确的是(C
A、自定义异常必须继承 Exception
B、自定义异常可以继承自 Error
C、自定义异常可以更加明确定位异常出错的位置和给出详细出错信息
D、程序中已经提供了丰富的异常类,使用自定义异常没有意义

89、Java中的集合类包括 ArrayList 、 LinkedList 、 HashMap 等类,下列关于集合类描述错误的是(C
A、ArrayList 和 LinkedList 均实现了 List 接口
B、ArrayList 的访问速度比 LinkedList 快
C、添加和删除元素时, ArrayList 的表现更佳
D、HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值

90、在Java中开发JDBC应用程序时,使用DriverManager类的getConnection()方法建立与数据源的连接语句为:Connection con= DriverManager.getConnection( “ jdbc:odbc:news ” ); URL连接中的”news”表示的是(C
A、数据库中表的名称
B、数据库服务器的机器名
C、数据源的名称
D、用户名

91、获取 ResutlSet对象 rst 的第一行数据,以下正确的是(B
A、rst.hashNext();
B、rst.next();
C、rst.first();
D、rst.nextRow();

first():移动到第一条记录,并未读取。

92、以下哪个方法用于定义线程的执行体?(C
A、start()
B、init()
C、run()
D、synchronized()

创建线程有两种方法:实现java.lang.Runnable接口和继承Thread类并重写run()方法。无论通过哪种方式创建线程,都必须通过run()方法定义线程体,因为一个线程在开始执行时,就是通过从其run()方法开始执行的。Runnable接口中定义了抽象run()方法,而Thread类本身也实现了Runnable接口。

93、下面哪个流类属于面向字符的输入流(D
A、BufferedWriter
B、FileInputStream
C、ObjectInputStream
D、InputStreamReader

字节输入流: InputStream
FileInputStream、ByteArrayInputStream、PipedInputStream、BufferedInputStream、ObjectInputStream、FilterInputStream、PushbackInputStream、DataInputStream
字节输出流: OutputStream
FileOutputStream、ByteArrayOutputStream、PipedOutputStream、BufferedOutputStream、ObjectOutputStream、FilterOutputStream、PrintStream、DataOutputStream
字符输入流: Reader
FileReader、CharArrayReader、PipedReader、StringReader、BufferedReader、InputStreamReader、FilterReader、PushbackReader
字符输出流: Writer
FileWriter、CharArrayWriter、PipedWriter、StringWriter、BufferedWriter、OutputStreamWriter、FilterWriter、PrintWriter

94、一个线程在任何时刻都处于某种线程状态(thread state),例如创建状态、运行状态、阻塞状态、就绪状态等。一个线程可以由选项中的哪种线程状态直接到达运行状态?(D
A、死亡状态
B、阻塞状态(对象 lock 池内)
C、阻塞状态(对象 wait 池内)
D、就绪状态

95、选项中哪一行代码可以替换题目中//add code here而不产生编译错误?(A

1
2
3
4
5
6
public abstract class long1_1{
public int constInt= 5;
//add code here
public void method() {
}
}

A、public abstract void method(int a);
B、constInt= constInt+ 5;
C、public int method();
D、public abstract void anotherMethod() {}

96、下列哪种说法是正确的(D
A、实例方法可直接调用超类的实例方法
B、实例方法可直接调用超类的类方法
C、实例方法可直接调用其他类的实例方法
D、实例方法可直接调用本类的类方法

类方法即用static修饰的方法,不能使用this,super关键字,不能调用非static的成员变量,非static的成员方法,只能访问static修饰的成员变量,成员方法
类方法指的是用static关键字修饰的方法,而实例方法就是相对于类方法的其它方法。
当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址,当该类创建对象后,类中的实例方法才分配入口地址,从而实例方法可以被类创建的任何对象调用执行。需要注意的是,当我们创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,不再分配入口地址,也就是说,方法的入口地址被所有的对象共享,当所有的对象都不存在时,方法的入口地址才被取消。
对于类中的类方法,在该类被加载到内存时,就分配了相应的入口地址。从而类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。类方法的入口地址直到程序退出才被取消。
对于A,不可以调用父类的private实例方法。因为private修饰的方法只有本类对象才可以调用
对于B,类方法只有本类才可以调用
对于C,跟A相同,比A更离谱

97、用于调用存储过程的对象是(C
A、ResultSet
B、DriverManager
C、CallableStatemet
D、PreparedStatement

98、按照 MVC 设计模式, JSP 用于实现(B)
A、Model
B、View
C、Controller
D、容器

99、在什么时候Float对象会被垃圾回收(C

1
2
3
4
5
6
7
8
public Object m() {
Object o = new Float(3.14F);
Object[] oa = new Object[1];
oa[0] = o;
o = null;
oa[0] = null;
return o;
}

A、在“oa[0] = o;”之后
B、在“o = null;”之后
C、在“oa[0] = null;”之后
D、在“return o;”之后

垃圾回收的判断条件是对象不可达,上面代码中与Float对象可达的有对象o和oa[0],所以在这两个对象都为空之后就可以回收了

100、下面代码的输出结果是(B

1
2
3
4
5
6
7
8
9
10
11
12
class Base {
Base() {
System.out.print("Base");
}
}
public class Alpha extends Base {
public static void main(String[] args) {
new Alpha();
new Base();
}
}

A、Base
B、BaseBase
C、代码运行但没有输出
D、运行时抛出异常

子类如果没有构造方法,默认调用父类的无参的构造方法

101、在Servlet的生命周期中,容器只调用一次的方法是(C、D
A、service
B、getServletConfig
C、init
D、destroy

init() 和destroy() 即 初始化 和 销毁 只执行一次

102、在一个线程中Sleep(1000)方法,将使得该线程在多少时间后获得对CPU的控制(假设睡眠过程中不会有其他事件唤醒该线程)(C
A、正好1000毫秒
B、1000毫秒不到
C、=>1000毫秒
D、不一定

因为在1000ms之后,只是让线程重新回到队列中,如果还有其它线程在执行,还会继续等待,不会立即取得CPU的控制

103、下面关于垃圾收集的说法正确的是(D
A、一旦一个对象成为垃圾,就立刻被收集掉。
B、对象空间被收集掉之后,会执行该对象的finalize方法
C、finalize方法和C++的析构函数是完全一回事情
D、一个对象成为垃圾是因为不再有引用指着它,但是线程并非如此。

只要JVM还没有快到耗尽内存的地步,它是不会浪费时间进行垃圾回收的;垃圾回收器准备释放内存的时候,会先调用finalize();如果你为某个对象定义了finalize() 方法,JVM 可能不会调用它,因为垃圾回收器不曾释放过那些对象的内,调用System.gc() 也不会起作用,因为它仅仅是给 JVM 一个建议而不是命令。

104、下面的语句会产生什么样的输出?(A

1
System.out.println(4&7);

A、4    B、5
C、6    D、7

0100 & 1111= 0100即为4

105、下列关于构造方法的叙述中,错误的(C
A、Java语言规定构造方法名与类名必须相同
B、Java语言规定构造方法没有返回值,但不用void声明
C、Java语言规定构造方法不可以重载
D、Java语言规定构造方法只能通过new自动调用

当不声明构造函数时,默认有一个无参数的构造方法;构造函数不能有返回类型;构造函数可以是私有的,这样外部就无法由私有的构造函数创建对象,如单例模式

106、在接口中以下哪条定义是正确的?(A、B
A、void methoda();
B、public double methoda();
C、public final double methoda();
D、static void methoda(double d1);
E、protected void methoda(double d1);

接口only public, abstract, default, static and strictfp are permitted,而且只有default, static修饰的方法才能有方法体,而且必须有方法体,也就是方法后面得有大括号

107、如下代码

1
2
3
4
5
6
7
8
9
public class X {
public X aMethod() { return this;}
}
public class Y extends X {
}

哪两个方法能加到Y类的定义中(C、E
A、public void aMethod() {}
B、private void aMethod() {}
C、public void aMethod(String s) {}
D、private Y aMethod() { return null; }
E、public X aMethod() { return new Y(); }

C属于重载,其实跟父类的同名方法没什么关系,E属于重写,覆盖父类的同名方法

108、写一个SIngleton(单例模式)出来

1
2
3
4
5
6
7
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton (){}
public static Singleton getInstance() {
return instance;
}
}

109、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是”可达的”,哪些对象是”不可达的”。当GC确定一些对象为”不可达”时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。

110、描述forward和redirect的区别

forward是服务器请求资源,服务器直接访问目标地址的URL,目标地址可以接收request 请求参数,然后把结果发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求哪个地址,浏览器会重新进行请求,此时不能用request传值,浏览器的地址栏会变成新的地址。

111、数据连接池的工作机制是什么?

J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其标记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量由配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

112、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

113、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是”类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

114、jsp 指令中 isELIgnored=”boolean” 的意思是(C
A、决定是否实现 Servler 的单线程模式,
B、决定改页面是否是一个错误处理页面,
C、决定是否支持 EL表示,
D、没有具体的含义

115、下面关于 Java 的引用,说法正确的是(B
A、应用实际上就是指针
B、应用本身是 Primitive
C、引用就是对象本身
D、一个对象只能被一个引用所指引

116、用于调用存储过程的对象是(C
A、ResultSet
B、DriverManager
C、CallableStatement
D、PreparedStatement

117、对于 import java.util 包,以下那种说法是错误的(C
A、Vector 类属于 java.util 包
B、Vector 类放在 … / java/util/ 目录下
C、Vector 类放在 java.util 文件中
D、Vector 类是 Sun 公司的产品

118、下面关于垃圾收集的说法正确的是(D
A、一旦一个对象成为垃圾,就立刻被收集掉。
B、对象空间被收集掉之后,会执行该对象的 finalize 方法
C、finalize 方法和 C++的析构函数是完全一回事情
D、一个对象成为垃圾是因为不再有引用指着它,但是线程并非如此。

119、下列标识符(名字)命名原则中,正确的是(D
A、类名的首字母小写
B、变量和方法名的首写字母大写
C、接口名的首写字母小写
D、常量完全大写

120、类 Test1定义如下:
1. public class Test1{
2. public float aMethod ( float a, float b ) { return 0;}
3.
4. }
将以下哪种方法插入行 3 是不合法的。(B
A、public float aMethod ( float a, float b , float c) { return 0;}
B、public float aMethod ( float c , float d ) { return 0;}
C、public intaMethod ( int a, int b) { return 0;}
D、private float aMethod ( int a, int b , int c) { return 0;}

Your support will encourage me to continue to create!