java笔试题汇总+部分答案

更新时间:2023-10-01 05:49:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

智力题:

1。100白球100黑球,每次拿出两个,如白+白,则放一个黑球进去,黑+黑,也放个黑球进去,白+黑,放个白球进去,直到只剩下一个球为止,问剩下黑球的概率。

2。10个人排队带帽子,10个黄帽子,9个蓝帽子,带好后后面的人可以看见前面所有人的帽子,然后从后面问起,问自己头上的帽子,结果一直问了9个人都说不知道,钋?br /> 面的人却知道自己头上的帽子的颜色,问是什么颜色,为什么。

3。正方形边长为1,以各个顶点半径为1做弧,在正方形中间有一个公共区域,求面积。 编程题:

1)一个人在小雨中走了5分钟,求落在他身上的雨滴的总质量;

2)求一个字串中的全部不相同的子串,大小写不分。这题80分,我没来得及做多少时间就到了。真是惭愧啊!!! 软件类:

1.哈息表和数组的定义,区别,优缺点

2.菲波列数列(就是和等于前两个的和相加的那个),用递归实现. 3.用dhtml写页面

4.程序输出结果(1,2,3,...100)

5.查找二叉树的编程,带动态插入.找书看看,当时没有作出来.后来看看 代码也就是60行.要用递归的.

6.sql语句的考察,要知道用\这个东西. 7.经常去的技术网站

8.对软件开发过程的理解.

1。100白球100黑球,每次拿出两个,如白+白,则放一个黑球进去,黑+黑,也放个黑球进去,白+黑,放个白球进去,直到只剩下一个球为止,问剩下黑球的概率。

1) 当试图编译并运行下面程序时会出现什么结果()(单选) class A{

public int getNumber(int a){ return a+1; } }

class B extends A{

public int getNumber(int a, char c){ return a+2; }

public static void main(String[] args){ B b=new B();

System.out.println(b.getNumber(0)); } }

a) 编译错误 b) 运行错误 c) 1 d) 2

2) 当编译并运行下面程序时会出现什么结果( )(单选) public class MyAr{

public static void main(String argv[]){ int[] i = new int[5]; System.out.println(i[5]); } }

a) 编译错误 b) 运行错误 c) 输出0

d) 输出“null”

3) final、finally、finalize三个关键字的区别是()(多选) a) final是修饰符(关键字)可以修饰类、方法、变量

b) finally在异常处理的时候使用,提供finally块来执行任何清除操作

c) finalize是方法名,在垃圾收入集器将对象从内存中清除出去之前做必要的清理工作 d) finally和finalize一样都是用异常处理的方法

4) 当编译并运行下面程序时会发生什么结果()(单选) public class Bground extends Thread{ public static void main(String argv[]){ Bground b = new Bground(); b.run(); }

public void start(){

for (int i = 0; i <10; i++){

System.out.println(\ } } }

a) 编译错误,指明run方法没有定义 b) 运行错误,指明run方法没有定义 c) 编译通过并输出0到9 d) 编译通过但无输出

5) 在Java中,如果父类中的某些方法不包含任何逻辑,并且需要由子类重写,应该使用()关键字来声明父类的这些方法。(单选)

a) Final b) Static c) Abstract d) Void

6) 当编译并运行下面程序时会发生什么结果:(单选) public class Hope{

public static void main(String argv[]){ Hope h = new Hope(); }

protected Hope(){

for(int i =0; i <10; i ++){ System.out.println(i); } } }

a) 编译错误,构造方法不能被声明为protected b) 运行错误,构造方法不能被声明为protected c) 编译并运行输出0到10 d) 编译并运行输出0到9

7) 下列说法正确的是?()(多选)

a) 数组有length()方法 b) String有length()方法 c) 数组有length属性 d) String有length属性

8) 当编译并运行下面程序时会发生什么结果?( )(单选) public class Test{

public static void stringReplace(String text){ text=text+”c”;

}

public static void bufferReplace(StringBuffer text){ text=text.append(\ }

public static void main(String args[]){ String textString=new String(\

StringBuffer textBuffer=new StringBuffer(\ stringReplace(textString); bufferReplace(textBuffer);

System.out.println(textString+textBuffer); } }

a) 编译并运行输出javac javac b) 编译并运行输出java java c) 编译并运行输出java javac d) 编译并运行输出 javac java

9) 以下哪些表达式返回为真()(多选) String a=”My field1”; String b=”My field1”;

String c=new String(”My field1”); String d=new String(”My field1”); a) a ==b b) a==c c) c==d

d) a.equals(b) e) a.equals(c) f) c.equals(d)

10) 当编译和运行下面程序时,哪项描述可以最准确的表达发生了什么事情( )(单选) public class MyAr{

public static void main(String argv[]) { MyAr m = new MyAr(); m.amethod(); }

public void amethod(){ int i;

System.out.println(i); } }

a) 编译并输出0 b) 编译错误

c) 编译并输出null d) 运行错误

11) 给定如下java代码程序片断: class A{

public A(){

System.out.println(“A”); } }

class B extends A{ public B(){

System.out.println(“B”); }

public static void main(String[] args){ B b=new B(); } }

上述程序将()(单选) a) 不能通过编译

b) 通过编译,输出为AB c) 通过编译,输出为B d) 通过编译,输出为A

12) 关于线程,以下说法正确的是:()(多选)

a) sleep方法执行时会释放对象锁。 b) wait方法执行时会释放对象锁。

c) sleep方法必须写在同步方法或同步块中 d) wait方法必须写在同步方法或同步块中

13) 给定JAVA代码如下,编译运行后,输出结果是()(单选) public class test{ static int i;

public int test(){ i++;

return i; }

public static void main(String args[]){ Test test=new Test(); test.test();

System.out.println(test.test()); } }

a) 0 b) 1 c) 2 d) 3

14) 给定JAVA代码如下,关于super的用法,以下描述正确的是( )(单选) class C extends B {

public C() {

super(); } }

a) 用来调用类B中定义的super()方法 b) 用来调用类C中定义的super()方法 c) 用来调用类B中的无参构造方法

d) 用来调用类B中第一个出现的构造方法

15) 哪些是Thread类中本身的方法(不包括继承) ( )(多选) a) start()

b) sleep(long mi) c) wait() d) notify()

16) 下面哪些为真()(多选)

a) 接口里可定义变量,并且变量的值不能修改 b) 任何情况下,类都不能被private修饰

c) 类可以被protected修饰 d) 接口不能实例化

17) 下面哪些是正确的描述了关键字synhronized ( )(单选)

a) 允许两个进程并行运行但其之间相互通信

b) 保证任何时候只有一个线程访问一个方法或对象 c) 保证两个或多个进程同时启动和结束 d) 保证两个或多个线程同时启动和结束

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

a) abstract修饰符可修饰属性、方法和类 b) 抽象方法的body部分必须用一对大括号{ } c) 声明抽象方法,大括号可有可无 d) 声明抽象方法不可写出大括号

19) 下面关于网络通信正确的描述是()(多选) a) TCP/IP协议是一种不可靠的网络通信协议。 b) UDP协议是一种可靠的网络通信协议。 c) TCP/IP协议是一种可靠的网络通信协议。 d) UDP协议是一种不可靠的网络通信协议。

20) 在Java中,下面关于抽象类的描述正确的是()(多选)

a) 抽象类可以被实例化

b) 如果一个类中有一个方法被声明为抽象的,那么这个类必须是抽象类 c) 抽象类的方法都必须是抽象的

d) 声明抽象类必须带有关键字abstract

21) 给定java代码如下,编译运行结果是()(单选) public class Test{ public int count(){ return 1%9; }

public static void main(String[]args){ System.out.println(count()); } }

a) 编译错误 b) 运行错误

c) 正常运行,输出1 d) 正常运行,输出0

22) 将对象序列化,要实现哪个接口()(单选)

a) Cloneable b) Runnable c) Serializable d) Comparator

23) 以下代码输出结果为( ) (单选) public class Test{

public static String output=\ public static void foo(int i){ try {

if(i==1){

throw new Exception(); }

output +=\ } catch(Exception e){ output+=\ return; } finally{

output+=\}

output+=\ }

public static void main(String args[]){ foo(0); foo(1);

System.out.println(output); } }

a) 1342 b) 123 c) 134234 d) 13423

24) 在JAVA中,()接口位于集合框架的顶层( ) (单选)

a) Collection b) Collections c) List d) Set

25) 在Java中,下列()类不能派生出子类( ) (单选)

a) public class MyClass{} b) class MyClass{}

c) abstract class MyClass{} d) final class MyClass{}

26) 启动一个线程,应调用什么方法()。(单选)

a) start() b) run() c) begin() d) notify)(

27) 在java中,已定义两个接口B和C,要定义一个实现这两个接口的类,以下语句正确的是( )(单选)

a) interface A extends B,C b) interface A implements B,C c) class A implements B,C

d) class A implements B,implements C

28) 在Java中,以下定义数组的语句正确的是( )(单选)

a) int t[10]=new int[]; b) char a[]=\ c) int t[]=new int[10]; d) double d=new double[10];

29) 给定一个java程序的main方法的代码片段如下:假如d目录下不存在abc.txt文件,现运行该程序,下

面的结果正确的是():(单选)

try{

PrintWriter out =

new PrintWriter(new FileOutputStream(\ String name=\ out.print(name); }catch(Exception e){

System.out.println(\文件没有发现!\}

a) 将在控制台上打印:\文件没有发现!\ b) 正常运行,但没有生成文件abc.txt

c) 运行后生成abc.txt,但该文件中可能无内容 d) 运行后生成abc.txt,该文件内容为:chen

30) 集合框架中,要实现对集合里的元素进行自定义排序,要实现哪个接口()(单选)

a) Cloneable b) Runnable c) Serializable d) Comparator

31) class Super{

protected float getNum(){return 3.0f;} }

public class Sub extends Super{ //Here }

下面哪些代码可放在Here处(多选)

a) float getNum(){return 4.0f;} b) public void getNum(){}

c) private void getNum(double d){}

d) public double Getnum(){return 4.0d;} e) public float getNum(){return 9;}

32) 在Java语言中,如果你编写一个多线程序,可以使用的方法是()。(多选)

a) 扩展类Thread

b) 实现Runnable接口 c) 扩展类Runnable d) 实现接口Thread

33) 下面哪些接口直接继承自Collection接口()(多选) a) List b) Map c) Set

d) Iterator

34) 关于HashMap和Hashtable正确的说法有()(多选)

a) 都实现了Map接口

b) Hashtable类不是同步的,而HashMap类是同步的 c) Hashtable 不允许null键或值 d) HashMap 不允许null键或值

35) 下面关于构造方法的说法正确的是()(多选)

a) 构造方法不能被继承 b) 构造方法不能被重写 c) 构造方法不能被重载

d) 构造方法不能声明为private

36) 研究下面的JAVA代码( )(单选) public class TestException {

/**

* @param args */

public static void main(String[] args) { int a[] = {0,1,2,3,4}; int sum=0; try {

for(int i=0;i<6;i++) {

sum+=a[i]; }

System.out.println(\ }

catch(java.lang.ArrayIndexOutOfBoundsException e) {

System.out.println(\数组下标越界\ }

finally {

System.out.println(\程序结束\ } } }

输出结果将是()

a) 10 数组下标越界 程序结束 b) 10 程序结束

c) 数组下标越界 程序结束 d) 程序结束

37) 研究下面JAVA代码

public class TestException {

public static void main(String[] args) { try {

System.out.println(\ System.exit(0); }

finally {

System.out.println(\ } } }

输出结果为()(单选)

a) hello,jr b) 88

c) hello,jr后是88 d) 不能编译

38) 考虑下面的代码

public class ConstOver{

public ConstOver(int x,int y,int z){} }

说出哪些重载了ConstOver构造器?(多选)

a) ConstOver(){}

b) protected int ConstOver(){}

c) private ConstOver(int z,int y,byte z){}

d) public void ConstOver(byte x,byte y,byte z){} e) public Object ConstOver(int x,int y,int z){}

39) 有以下代码: package com; public class Test {

public static void main(String[] args) { Test test = new Test(); //here } }

在here处加上以下什么语句,可以获得Class对象?(多选) a) Class c = new Class(); b) Class c = test.class; c) Class c = Test.class;

d) Class c = test.getClass();

e) Class c = Class.forName(“com.Test”); f) Class c = Class.forName(“Test”);

40) 能用来修饰interface方法的有( )(多选)

a) private b) public c) protected d) static e) 不加修饰符

java笔试题以及答案详解 一 一、单项选择题

1.Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B

2.下列语句哪一个正确()

A. Java程序经编译后会产生machine code B. Java程序经编译后会产生byte code C. Java程序经编译后会产生DLL D.以上都不正确 答案:B

3.下列说法正确的有()

A. class中的constructor不可省略

B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor

答 案:C

详解: 见下面代码, 很明显方法是可以和类名同名的,和构造方法唯一的区别就是,构造方法没有返回值。 package net.study;

public class TestConStructor {

public TestConStructor() {

System.out.println(\}

public void TestConStructor() {

System.out.println(\}

public static void main(String[] args) {

TestConStructor testConStructor = new TestConStructor();

System.out.println(\

testConStructor.TestConStructor(); } }

4.提 供Java存取数据库能力的包是()

A.java.sql B.java.awt C.java.lang D.java.swing 答案:A

5.下 列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 详解:

java 中没有<> := 这种运算符, if else不算运算符

6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1;

}while(a>0); 后,C的值是()

A.0 B.1 C.-1 D.死循环 答 案:C 详解:

Do while 中的语句是至少要执行一次的。 执行顺序为:do 中的语句,然后价差while条件,如果为false,则终止;如果为true,则继续执行Do中的语句,然后再检查while条件,如此循环。

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

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

B.抽 象方法的body部分必须用一对大括号{ }包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 详解:

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

8.下列语句正确的是()

A.形式参数可被视为local variable B.形式 参数可被字段修饰符修饰

C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 答案:A 详解:

形参可以看成方法中的局部变量。 传递的是对象引用

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

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

C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的 类方法 答案:D

二、多项选择题

1.Java程序的种类有()

A.类 (Class) B.Applet C.Application D.Servlet Java程序的种类有:

1、内嵌于web文件中,由浏览器来观看的Applet 2、可独立运行的Application 3、服务器端的Servlet

2.下列说法正 确的有()

A. 环境变量可在编译source code时指定

B.在编译程序时,所能指定的环境变量不包括 class path C. javac一次可同时编译数个Java源文件

D. javac.exe能指定编译结果要置于哪个目录(directory) 答案:BCD

3.下列标识符不合法的有 ()

A.new B.$Usdollars C.1234 D.car.taxi 答案:ACD 解释:

java 变量命名规则:1. 大小写有别,例如 a 和 A是两个变量 2. 长度任意 3. 可以任何字母开始,另外还可以以\和\开始,一般\是很多代码生成器用的,人工写出来的代码不鼓励\除了第一个字符,后面可以跟任何字母,数字,_和$

new 是关键字不行。 不能以数字开头。 不用有“.”这种符号

4.下列说法错误的有() A.数组是一种对象

B.数组属于一种原生类

C. int number=[]={31,23,33,43,35,63} D.数组的大 小可以任意改变 答案:BCD 解释:

数组不是原生类:int double boolean float byte short long char ,初始化多大就是多大

5.不能用来修饰interface的有()

A.private B.public C.protected D.static 答案:ACD 解释:

interface 是public的, 加不加都是public

6.下列正确的有()

A. call by value不会改变实际参数的数值

B. call by reference能改变实际参数的参考地址 C. call by reference不能改变实际参数的参考地址 D. call by reference能改变实际参数的内容

答案:ACD

7.下列说法 错误的有()

A.在类方法中可 用this来调用本类的类方法 B.在类方法中调用本类的类方法时可直接调用 C.在类方法中只能调用本类中的类方法 D.在类方法中绝对不能调用实例方法 答案:CD 解释:

原来答案中包含A,但是在 JDK1.5中,这样写是不会出错的,只不过会有警告而已。 类方法中当然可以条用其它的方法,比如system.out 。 当然你也可以new Object, 调用一下object.toString()

8.下列说法错误的有()

A. Java面向对象语言容许单独的过程与函数存在 B. Java面向对象语言容许单独的方法存在

C. Java语言中的方法属于类中的成员(member)

D. Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同 答案:ABC 解释:

java全部完全面向对象的

9.下列说法错误的有 ()

A.能被java.exe成功运行的java class文件必须有main()方法 B. J2SDK就是Java API

C. Appletviewer.exe可利用jar选项运行.jar文件

D.能被 Appletviewer成功运行的java class文件必须有main()方法 答案:BCD 解释:

A正确main方法是入口 BJ2SDK当然不仅仅包含java API C jar选项是java.exe 的选项 D Appletviewer是运行applet的, applet 不用main方法,继承applet类即可。

三、判断题

1.Java程序中的起始类名称必须与存放该类的文件名相同。() 答案:正确

2.Unicode是用16位来表示 一个字的。() 答案:正确

3.原生类中的数据类型均可任意转换。() 答案:错误

1.分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。 答案:

BOOL : if ( !a ) or if(a) int : if ( a == 0)

float : const EXPRESSION EXP = 0.000001 if ( a < EXP && a >-EXP)

pointer : if ( a != NULL) or if(a == NULL)

华为Java笔试题+数据库题 一、 单项选择题

1.Java是从( )语言改进重新设计。

A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列语句哪一个正确( )

A. Java程序经编译后会产生machine code B. Java程序经编译后会产生byte code C. Java程序经编译后会产生DLL D. 以上都不正确 答案:B 3.下列说法正确的有( )

A. class中的constructor不可省略

B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时执行

D. 一个class只能定义一个constructor 答案:C 4.提供Java存取数据库能力的包是( )

A.java.sql B.java.awt C.java.lang D.java.swing 答案:A 5.下列运算符合法的是( ) A.&& B.<> C.if D.:= 答案:A 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1;

}while(a>0);

后,C的值是( )

A.0 B.1 C.-1 D.死循环 答案:C 7.下列哪一种叙述是正确的( )

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

B. 抽象方法的body部分必须用一对大括号{ }包住 C. 声明抽象方法,大括号可有可无

D. 声明抽象方法不可写出大括号 答案:D 8.下列语句正确的是( )

A. 形式参数可被视为local variable B. 形式参数可被字段修饰符修饰

C. 形式参数为方法被调用时,真正被传递的参数 D. 形式参数不可以是对象 答案:A 9.下列哪种说法是正确的( ) A. 实例方法可直接调用超类的实例方法 B. 实例方法可直接调用超类的类方法 C. 实例方法可直接调用其他类的实例方法

D. 实例方法可直接调用本类的类方法 答案:D 二、 多项选择题

1.Java程序的种类有( )

A.类(Class) B.Applet C.Application D.Servlet 2.下列说法正确的有( )

A. 环境变量可在编译source code时指定

B. 在编译程序时,所能指定的环境变量不包括class path C. javac一次可同时编译数个Java源文件

D. javac.exe能指定编译结果要置于哪个目录(directory) 答案:BCD 3.下列标识符不合法的有( )

A.new B.$Usdollars C.1234 D.car.taxi 答案:ACD 4.下列说法错误的有( ) A. 数组是一种对象 B. 数组属于一种原生类

C. int number=[]={31,23,33,43,35,63} D. 数组的大小可以任意改变 答案:BCD 5.不能用来修饰interface的有( )

A.private B.public C.protected D.static 答案:ACD 6.下列正确的有( )

A. call by value不会改变实际参数的数值

B. call by reference能改变实际参数的参考地址 C. call by reference不能改变实际参数的参考地址

D. call by reference能改变实际参数的内容 答案:ACD 7.下列说法错误的有( )

A. 在类方法中可用this来调用本类的类方法 B. 在类方法中调用本类的类方法时可直接调用 C. 在类方法中只能调用本类中的类方法

D. 在类方法中绝对不能调用实例方法 答案:ACD 8.下列说法错误的有( )

A. Java面向对象语言容许单独的过程与函数存在 B. Java面向对象语言容许单独的方法存在

C. Java语言中的方法属于类中的成员(member)

D. Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同 9.下列说法错误的有( )

答案:ABC A. 能被java.exe成功运行的java class文件必须有main()方法 B. J2SDK就是Java API

C. Appletviewer.exe可利用jar选项运行.jar文件

D. 能被Appletviewer成功运行的java class文件必须有main()方法 答案:BCD 三、 判断题

1.Java程序中的起始类名称必须与存放该类的文件名相同。( ) 答案:正确 2.Unicode是用16位来表示一个字的。( ) 答案:正确 3.原生类中的数据类型均可任意转换。( ) 答案:错误

1、给定如下JAVA 程序片断: class A{ public A(){ system.out.println(“A”); } } class B extends A{ public B(){System.out.println(“B”);} public static void main(String[] args){ B b=new B();} } 上述程序将( ).(选择一项)

A、 不能通过编译

B、通过编译,输出为: A B C、通过编译,输出为: B D、通过编译,输出为: A

2、某一 java程序中有如下代码: Datalnputstream din=new DataInputstream(new BufferedInputstream (new FileInputstream(“employee.dat”) )); 假设在employee.dat文件中只有如下一段字符:abcdefg。则:System.out.println(din)在屏幕上打印().(选择一项) A、A B、B C、97 D、98

3、给定java代码片段,如下: int i=0,j=-1; switch(i){ case 0,1:j=1; case 2:j=2; } System.out.print(\编译运行,正确的是()。(选择一项) A、程序编译出错

B、j=1 C、j=2 D、j=0

4、在Java中,下面关于构造函数的描述正确的是()。(选择一项) A、类必须有显式构造函数 B、它的返回类型是void

C、它和类有相同的名称,但它不能带任何参数 D、以上皆非

5、 在JAVA编程中,Swing包中的组件处理事件时,下面()是正确的。(选择一项) A、 Swing包中的组件也是采用事件的授权得理模型来处理事件的

B、 Swing包中组件产生的事件类型,也都带有一个J字母,如:JmouseEvent C、Swing包中的组件也可以采用事件的传递处理机制

D、 Swing包的组件所对应的事件适配器也是带有J字母的,如:JmouseAdapter

6、Public class EqTest { public static void main(String args[]){ EqTest e=new EqTest(); } EqTest(){ String s=\在这儿放置测试代码 {System.out.println(\相等\{System.out.println(\不相等\在上面的Java代码的注释行位置,放置()测试代码能输出“相等”结果。(选择一项) A、if(s==s2)

B、if(s.equals(s2))

C、if(s.equalsIgnoreCase(s2)) D、if(s.noCaseMatch(s2))

7、 在类的说明符中,被指定为私有的数据可以被以下()访问。(选择一项) A、程序中的任何函数 B、其他类的成员函数 C、类中的成员函数 D、派生类中的成员函数

8、 在JAVA编程中,以下()命令用来执行java类文件。(选择一项) A、javac B、java

C、appletviewer

D、以上所有选项都不正确

9、Java中,下面的方法可以正确的创建一个Swing标签组件是()(选择两项) A、ImageIcon icon = new ImageIcon(

B、ImageIcon icon = new ImageIcon( C、ImageIcon icon=new ImageIcon(

D、JLabel label=new JLabel(SwingConstants.LEFT);

10、分析下面的用Java语言编写的trythis()方法: public void trythis(){ try{ System.out.print(\problem(); }catch(RuntimeException e){ System.out.print(\}catch(Exception e){ System.out.print(\当该方法被调用时,如果其中的problem()方法引发一个RuntimeException类的异常,那么输出结果将是()。(选择一项) A、abcde B、abd C、abde D、abe

11、 public class MyClass1{ public static void main (String argv[]){} _____ class MyInner {} } 在以上java代码中的横线上,可放置()修饰符。(选择三项) A、public B、private C、static D、friend

12、public class test3{ public static void main(String args[]){ for{int I=0;I<3;I++}{ for{int j=3; j>0;j--}{ If(I==j) continue; System.out.print}n(“I=”+I+”j=”+j) } } } } 上面的JAVA代码编译运行后,下列选项中,()会出现在输出结果中,(选择三项) A、I=0 j=3 B、I=0 j=0 C、I=2 j=2 D、I=0 j=2 E、I=1 j=2 13、如下Java代码段,体现了()概念。(选择一项) ..... public void aMethod(String s){....} public void aMethod(int i){.........} public void aMethod(int I,float f){.....} ..... A、多继承 B、重载 C、重写 D、多态

14、java语言中,下列时处理输出操作的所有类的基础的是()(选择一个) A、DataOutput B、OutputStream

C、BufferedOutputStream D、IOStream

15、在jave中,类Worker是类Person的子类,Worker的构造方法中有一句”super()”, 该语句 ( )。(选择一项)

A、a) 调用类Worker 中定义的super()方法 B、b) 调用类Person中定义的super()方法 C、c) 调用类Person的构造函数 D、d) 句法错误

16、在Java中,关于final关键字的说法正确的是()。(选择两项) A、如果修饰变量,则一旦赋了值,就等同一个常量 B、如果修饰类,则该类只能被一个子类继承 C、如果修饰方法,则该方法不能在子类中被覆盖 D、如果修饰方法,则该方法所在的类不能被继承

17、在Java中,下列选项表示字符”a”值的是().(选择一项) A、'a' B、\

C、new Character(a) D、\\000a

18、给定java代码片段,如下: Integer a = new Integer(3); Integer b = new Integer(3); System.out.println(a==b); 运行后,这段代码将输出()。(选择一项) A、true B、false C、0 D、1

19、Java程序中读入用户输入的一个值,要求创建一个自定义的异常,如果输入值大于10,使用throw语句显式地引发异常,异常输出信息为“something’s wrong!”,语句为()。(选择一项) A、if (I>10) throw Exception(“something’s wrong!”); B、if (I>10) throw Exception e (“something’s wrong!”); C、if (I>10) throw new Exception(“something’s wrong!”); D、if (I>10) throw new Exception e (“something’s wrong!”);

20、42.给定两个java程序,如下:Text.java的编译运行结果是(). (选择一项) pubilc interface Face{ int count=40; } pubilc class Text implements Face{ private static int counter; pubilc static void main(String[]args){ System.out.println(++counter); } } A、40 B、41 C、0 D、1

21、39.给定一个Java程序代码,如下:运行编译后,输出结果是(). (选择一项) pubilc class Test{ int count = 9; pubilc void count1(){ int count = 10; SYstem.out.println(\} pubilc void count2(){ SYstem.out.println(\Twst(); t.count1(); t.count2(); } } A、count1=9 count2=9 B、count1=10 count2=9 C、count1=10 count2=10 D、count1=9 count2=10

22、37.给定java代码如下:要使用这段代码能够编译成功,横线处可以填入().(选择两项) pubilc int count(char c,int i,double d){ return______; } A、c*i

B、c*(int)d C、(int)c*d D、i*d

23、 在 JAVA编程中,Java编译器会将Java程序转换为()。(选择一项) A、字节码 B、可执行代码 C、机器代码

D、以上所有选项都不正确

24、在J2EE中,下列元素经过排序的集合类是()。(选择一项) A、LinkedList B、Stack C、Hashtable D、TreeSet

25、9) 分析下面的Java程序: public class yy { public static void main(String[] ards) throws Exception { try { throw new Exception(); }catch(Exception e){ System.out.println(\in main()\} System.out.println(\输出结果为()。(选择一项) A、Caught in main() nothing B、Caught in main() C、nothing

D、没有任何输出

26、编译并运行下面的Java代码段: char c='a'; switch (c) { case 'a': System.out.println(\default: System.out.println(\输出结果是()。(选择一项) A、代码无法编译,因为switch语句没有一个合法的表达式 B、a default C、a

D、default

27、在Java中,执行下面的语句后,c的值为()。(选择一项) String s= \\char c=s.charAt(6); A、null www.87717.com B、' ' C、'c ' D、'a '

28、在J2EE中,下面的代码中出现编译错误的是()。(选择一项) A、File f = new File(\

B、DataInputStream din = new DataInputStream(new FileInputStream(\ C、InputStreamReader in = new InputStreamReader(System.in);

D、OutputStreamWriter out = new OutputStreamWriter(System.in);

29、38.在JavaSwing编程中,要获取每次选择的JComboBox对象的选项值,可以使用()类型的监听器. (选择两项)

A、ActionListener B、ltemListener C、KeyListener

D、SelectionListener

30、在Java中,下面关于包的陈述中正确的是()。(选择两项) A、包的声明必须是源文件的第一句代码 B、包的声明必须紧跟在import语句的后面 C、只有公共类才能放在包中

D、可以将多个源文件中的类放在同一个包中

31、在Java中,要想使只有定义该类所在的包内的类可以访问该类,应该用( )关键字。(选择一项) A、不需要任何关键字 B、private C、final D、protected

32、包pack1的类class1中有成员方法: protected void method_1(){?}, private void method_2(){?}, public void method_3(){?}和void method_4(){?},在包pack2中的类class2是class1的子类,你在class2中可以调用方法()。(选择两项) A、method_1 B、method_2 C、method_3 D、method_4

33、在Java语言中,小明在他的包mypackage中定义了类My_Class,在mypackage的子包mysubpackage中也有个类My_Class。小明用.import mypackage:引入包,执行其中的语句:My_Class NewClass=New My_Class();时,将发生()。(选择一项)

A、创建一个类mypackage.My_Class对象

B、创建一个类mypackage. Mysubpackage.My_Class的对象 C、该语句是错误的

D、创建一个类mypackage.My_Class的对象和一个类mypackage. Mysubpackage.My_Class的对象

34、41.在JavaSwing编程中,给定一个java程序main方法的代码片段如下: JFrame jf=new JFrame(); jf.getContentpane().setLayout(null); jf.setSize(200,200); jf.setVisible(true); //a 要在界面上显示如下组件,则应在A处填入(). (选择一项)

AJTextAreatext=textJTextArea(100,100);text.setBounds(10,10,150,100);jf.getContentpane().add(text); B、JTextField text = text JTextField(100,100);JScrollpane text=new JScrollpane(text);jf.setBounds(10,10,150,100);jf.getContentpane().add(jp); C、JTextArea text = new JTextArea(100,1);JScrollpane jp=new JScrollpane(text);jp.setBounds(10,10,150,100);jf.getContentpane().add(jp); D、JTextArea text = new JTextArea(100,100);JScrollpane jp=new JScrollpane(text);jp.setBounds(10,10,150,100);jf.getContentpane().add(jp);

35、在JAVA语言中,你的按钮要实现下面的功能:当鼠标按下按钮时,显示“鼠标已按下”;当释放按键时,显示“鼠标已释放”。你必须具体定义接口MouseListener的()方法。(选择两项) A、mouseClicked B、mouseEntered C、mouseExited D、mousePressed E、mouseReleaseed

36、JAVA中,为了辨别用户关闭窗口的时间,要实现监听器接口()。(选择一项) A、MouseListener B、ActionListener C、WindowListener D、以上都要

37、在Java语言中,当一个类的某个变量声明为protected时下列说法正确的是()。(选择两项) A、只有同一类中的成员才能访问它 B、不同包中的任何其他类都能够访问它 C、同包中的任何其他类能够访问它 D、不同包中的子类可以访问该变量

38、在Java事件处理模型中,当按下鼠标按钮时,处理()事件。(选择一项) A、mouseReleased B、mouseExited C、mousePressed D、mouseDown

39、 String s1=new String(“Hello”); String s2=new String(“there”); String s3=new String(\上面是JAVA程序的一些声明,以下选项中能够通过编译的是()。(选择一项) A、a) s3=s1+s2 B、b) s3=s1&s2 C、c) s3=s1||s2 D、d) s3=s1&&s2

40、在Java中,调用Math.random() 方法可能返回的结果是()。(选择一项) A、132.34 B、0.342 C、29.34E10 D、1.0009

41、 在Java语言中,Panel默认的布局管理器是()。(选择一项) A、BorderLayout B、FlowLayout C、GridLayout D、GridBagLayout

42、public class MyClass1 { public static void main(String argv[]){} ______class MyInner{} } 在以上Java代码的横线上,可放置()修饰符。(选择两项) A、public B、private C、implements D、friend

43、在java中,下列赋值语句正确的是()。(选择二项) A、char c='a'; B、char c=\ C、char c=97;

D、char c=new Character('a');

44、与传统的过程编程不同,面向对象方法的主要思想是()。(选择两项) A、真实反映用户的实际需求

B、将现实世界的一切抽象为实体或对象 C、将现实世界细分为一个过程化实现

D、将软件组织成为对象的集合,将数据结构和行为结合在一起

45、在Java中,根据你的理解,下列方法()可能是类Orange的构造方法。(选择3项) A、Orange(){?}

B、Orange(?){?}

C、Public void Orange(){?} D、Public Orange(){?}

E、Public Orange Constuctor(){?}

46、45.在Java中,()借口位于集合框架的顶层. (选择一项) A、Map

B、Collection C、Set D、List 47、给定某java程序片段,如下: int i=1; int j=i++; if((i>++j)&&(i++==j)) i+=j; System.out.println(i); 该程序运行后,i的输出结果为()。(选择一项) A、1 B、2 C、3 D、4

48、在Java中,假设我们有一个实现ActionListener接口的类,以下方法中()能够为一个Button类注册这个类。(选择一项) A、addListener()

B、addActionListener()

C、addButtonListener() D、setListener()

49、44.在JAVA中的布局管理器,以下说法中错误的是(). (选择一项) A、FlowLayout以由上到下的方式从左到右排列组件

B、BorderLayout使用 \东\西\南\北\居中\来指定组件的位置 C、GridLayout可以创建网格布局,网格布局中各组的大小可以任意调整 D、可以通过容器的setLayout方法为容器指定布局管理

50、研究下面的Java代码: public class testException{ public static void main(String args[]){ int n[]={0,1,2,3,4}; int sum=0; try { for(int i=1;i<6;i++) sum=sum+n[i]; System.out.println(\} catch(ArrayIndexOutOfBoundsExpception e) { System.out.println(\数组越界\} finally{System.out.println(\程序结束\输出结果将是()。(选择一项) A、10 数组越界 程序结束 B、10 程序结束

C、数组越界 程序结束 D、程序结束

【java大本营】1、在java中如果声明一个类为final,表示什么意思?

答:final是最终的意思,final可用于定义变量、方法和类但含义不同,声明为final的类不能被继承。

2、父类的构造方法是否可以被子类覆盖(重写)?

答:父类的构造方法不可以被子类覆盖,因为父类和子类的类名是不可能一样的。

3、请讲述String 和StringBuffer的区别。

答:String 类所定义的对象是用于存放“长度固定”的字符串。

StringBuffer类所定义的对象是用于存放“长度可变动”的字符串。

4、如果有两个类A、B(注意不是接口),你想同时使用这两个类的功能,那么你会如何编写这个C类呢?

答:因为类A、B不是接口,所以是不可以直接继承的,但可以将A、B类定义成父子类,那么C类就能实现A、B类的功能了。假如A为B的父类,B为C的父类,此时C就能实现A、B的功能。

5、结合Java视频Lesson5(多线程),分析sleep()和wait()方法的区别。

答: Sleeping睡眠的意思 : sleep() 方法用来暂时中止执行的线程。在睡眠后,线程将进入就绪状态。 waiting等待的意思: 如果调用了 wait() 方法,线程将处于等待状态。用于在两个或多个线程并发运行时。

6、谈谈你对抽象类和接口的理解。 答:定义抽象类的目的是提供可由其子类共享的一般形式、子类可以根据自身需要扩展抽象类、抽象类不能实例化、抽象方法没有函数体、抽象方法必须在子类中给出具体实现。他使用extends来继承。

接口:一个接口允许一个类从几个接口继承而来,Java 程序一次只能继承一个类但可以实现几个接口,接口不能有任何具体的方法,接口也可用来定义可由类使用的一组常量。其实现方式是interface来实现。

东南融通Java基础笔试题

1、 下列哪些不是JAVA关键字()

A)goto B)native C) interface D)class 2、下列异常是运行时异常的是?()

A)NullPointerException B)IOException C)SQLException D)ClassNotFoundException 3、哪个不是面向对象的基本特征()

A)封装性 B)继承性 C)多态性 D)接口性 4、关于类的继承机制,下列说法不正确的是()

A)类只能单一继承 B)类只能继承一个接口或1个类 C)类可以实现多个接口 D)类的单一继承保证了程序的简单,清晰

5、下列语句哪一个正确()

A)JAVA程序经编译后会产生machine code B)JAVA程序经编译后会产生byte code C)JAVA程序经编译后会产生DLL D)以上都不正确

6、JAVA程序中的起始类名称必须与存放该类的文件名相同()

7、HashTable与HashMap的区别之一是HashTable可以存空键和空值(X) 8、在静态方法中可用this来调用本类的类方法。(X) 9、abstract修饰符可修饰字段、方法和类()

10、接口中成员变量限定符默认为static final,且声明时必须赋值() 11、输出1-100之间所有素数(除了1和自身不能被其他整数整除的整数)

12、目前有3个几何图形正方形、长方形、四边形、可以计算其周长和面积、请根据其特性设计类,包括类中的属

性和方法。

1. 下面哪些是Thread类的方法()

A start() B run() C exit() D getPriority() 答案:ABD

解析:看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System类的方法,如System.exit(0)。

2. 下面关于java.lang.Exception类的说法正确的是()

A 继承自Throwable B Serialable CD 不记得,反正不正确 答案:A

解析:Java异常的基类为java.lang.Throwable,java.lang.Error和java.lang.Exception继承 Throwable,RuntimeException和其它的Exception等继承Exception,具体的RuntimeException继承RuntimeException。 扩展:错误和异常的区别(Error vs Exception)

1) java.lang.Error: Throwable的子类,用于标记严重错误。合理的应用程序不应该去try/catch这种错误。绝大多数的错误都是非正常的,就根本不该出现的。

java.lang.Exception: Throwable的子类,用于指示一种合理的程序想去catch的条件。即它仅仅是一种程序运行条件,而非严重错误,并且鼓励用户程序去catch它。 2) Error和RuntimeException 及其子类都是未检查的异常(unchecked exceptions),而所有其他的Exception类都是检查了的异常(checked exceptions).

checked exceptions: 通常是从一个可以恢复的程序中抛出来的,并且最好能够从这种异常中使用程序恢复。比如FileNotFoundException, ParseException等。

unchecked exceptions: 通常是如果一切正常的话本不该发生的异常,但是的确发生了。比如

ArrayIndexOutOfBoundException, ClassCastException等。从语言本身的角度讲,程序不该去catch这类异常,虽然能够从诸如RuntimeException这样的异常中catch并恢复,但是并不鼓励终端程序员这么做,因为完全没要必要。因为这类错误本身就是bug,应该被修复,出现此类错误时程序就应该立即停止执行。 因此,面对Errors和unchecked exceptions应该让程序自动终止执行,程序员不该做诸如try/catch这样的事情,而是应该查明原因,修改代码逻辑。

RuntimeException:RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等。

处理RuntimeException的原则是:如果出现 RuntimeException,那么一定是程序员的错误。例如,可以通过检查数组下标和数组边界来避免数组越界访问异常。其他(IOException等等)checked异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。

3. 下面程序的运行结果是() String str1 = \

String str2 = \new String(\System.err.println(str1 == str2); 答案:false

解析:因为str2中的llo是新申请的内存块,而==判断的是对象的地址而非值,所以不一样。如果是String str2 = str1,那么就是true了。

4. 下列说法正确的有()

A. class中的constructor不可省略

B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 答案:C

解析:这里可能会有误区,其实普通的类方法是可以和类名同名的,和构造方法唯一的区分就是,构造方法没有返回值。

5. 具体选项不记得,但用到的知识如下: String []a = new String[10]; 则:a[0]~a[9] = null a.length = 10

如果是int []a = new int[10]; 则:a[0]~a[9] = 0 a.length = 10

6. 下面程序的运行结果:() [java] view plaincopy

result = result + i * 3; }

return result; }

A0 B2 C4 D10 答案:D

解析:注意这里case后面没有加break,所以从case 2开始一直往下运行。

28. 选项中哪一行代码可以替换题目中//add code here而不产生编译错误?() [java] view plaincopy

1. public abstract class MyClass { 2.

3. public int constInt = 5; 4. //add code here

5. public void method() { 6. } 7. }

Apublic abstract void method(int a); B constInt = constInt + 5; C public int method();

D public abstract void anotherMethod() {} 答案:A

解析:考察抽象类的使用。 抽象类遵循的原则:

(1)abstract关键字只能修饰类和方法,不能修饰字段。

(2)抽象类不能被实例化(无法使用new关键字创建对象实例),只能被继承。

(3)抽象类可以包含属性,方法,构造方法,初始化块,内部类,枚举类,和普通类一样,普通方法一定要实现,变量可以初始化或不初始化但不能初始化后在抽象类中重新赋值或操作该变量(只能在子类中改变该变量)。 (4)抽象类中的抽象方法(加了abstract关键字的方法)不能实现。 (5)含有抽象方法的类必须定义成抽象类。

扩展:抽象类和接口的区别,做个总结吧:

(1)接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的。

(2)abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface,实现多重继承。接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用。

(3)在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是 static final的,不过在 interface中一般不定义数据成员),所有的成员方法默认都是 public abstract 类型的。 (4)abstract class和interface所反映出的设计理念不同。其实abstract class表示的是\关系,interface表示的是\关系。

(5)实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。抽象类中可以有非抽象方法。接口中则不能有实现方法。

(6)接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以在子类中重新赋值。

29. 阅读Shape和Circle两个类的定义。在序列化一个Circle的对象circle到文件时,下面哪个字段会被保存到文件中? ( )

[java] view plaincopy 1. class Shape { 2.

3. public String name; 4. 5. } 6.

7. class Circle extends Shape implements Serializable{ 8.

9. 10. 11. 12.

9. private float radius; 10.

11. transient int color; 12.

13. public static String type = \; 14. 15. }

Aname B radius C color D type 答案:B

解析:这里有详细的解释:http://www.cnblogs.com/lanxuezaipiao/p/3369962.html

30.下面是People和Child类的定义和构造方法,每个构造方法都输出编号。在执行new Child(\的时候都有哪些构造方法被顺序调用?请选择输出结果 ( ) [java] view plaincopy

1. class People {

2. String name; 3.

4. public People() {

5. System.out.print(1); 6. } 7.

8. public People(String name) { 9. System.out.print(2); 10. this.name = name; 11. } 12. } 13.

14. class Child extends People { 15. People father; 16.

17. public Child(String name) { 18. System.out.print(3); 19. this.name = name;

20. father = new People(name + \); 21. } 22.

23. public Child() {

24. System.out.print(4); 25. } 26. 27. }

A312 B 32 C 432 D 132 答案:D

解析:考察的又是父类与子类的构造函数调用次序。在Java中,子类的构造过程中必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来。但如果父类有多个构造函数时,该如何选择调用呢? 第一个规则:子类的构造过程中,必须调用其父类的构造方法。一个类,如果我们不写构造方法,那么编译器会帮我们加上一个默认的构造方法(就是没有参数的构造方法),但是如果你自己写了构造方法,那么编译器就不会给你添加了,所以有时候当你new一个子类对象的时候,肯定调用了子类的构造方法,但是如果在子类构造方法中我们并没有显示的调用基类的构造方法,如:super(); 这样就会调用父类没有参数的构造方法。

第二个规则:如果子类的构造方法中既没有显示的调用基类构造方法,而基类中又没有无参的构造方法,则编译出错,所以,通常我们需要显示的:super(参数列表),来调用父类有参数的构造函数,此时无参的构造函数就不会被调用。

总之,一句话:子类没有显示调用父类构造函数,不管子类构造函数是否带参数都默认调用父类无参的构造函数,若父类没有则编译出错。

1. public 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.

static void main(String args[]) { Thread t = new Thread() { };

public void run() { pong(); }

t.run();

System.out.print(\); }

static void pong() {

System.out.print(\); }

A pingpong B pongping C pingpong和pongping都有可能 D 都不输出 答案:B

解析:去了static用类对象引用仍为B,对Thread的运行机制不是很了解,不知道为啥,欢迎大家补充。

7. 下列属于关系型数据库的是()

A. Oracle B MySql C IMS D MongoDB 答案:AB

解答:IMS(Information Management System )数据库是IBM公司开发的两种数据库类型之一; 一种是关系数据库,典型代表产品:DB2;

另一种则是层次数据库,代表产品:IMS层次数据库。 非关系型数据库有MongoDB、memcachedb、Redis等。

8. GC线程是否为守护线程?() 答案:是

解析:线程分为守护线程和非守护线程(即用户线程)。

只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。

守护线程最典型的应用就是 GC (垃圾回收器)

9. volatile关键字是否能保证线程安全?() 答案:不能

解析:volatile关键字用在多线程同步中,可保证读取的可见性,JVM只是保证从主内存加载到线程工作内存的值是最新的读取值,而非cache中。但多个线程对

volatile的写操作,无法保证线程安全。例如假如线程1,线程2 在进行read,load 操作中,发现主内存中count的值都是5,那么都会加载这个最新的值,在线程1堆count进行修改之后,会write到主内存中,主内存中的count变量就会变为6;线程2由于已经进行read,load操作,在进行运算之后,也会更新主内存count的变量值为6;导致两个线程及时用volatile关键字修改之后,还是会存在并发的情况。

10. 下列说法正确的是() A LinkedList继承自List B AbstractSet继承自Set C HashSet继承自AbstractSet D WeakMap继承自HashMap 答案:AC

解析:下面是一张下载的Java中的集合类型的继承关系图,一目了然。

11. 存在使i + 1 < i的数吗() 答案:存在

解析:如果i为int型,那么当i为int能表示的最大整数时,i+1就溢出变成负数了,此时不就 j || i <= j不成立的数吗() 答案:存在

解析:比如Double.NaN或Float.NaN,感谢@BuilderQiu网友指出。

12. 0.6332的数据类型是()

A float B double C Float D Double 答案:B

解析:默认为double型,如果为float型需要加上f显示说明,即0.6332f

13. 下面哪个流类属于面向字符的输入流( )

A BufferedWriter B FileInputStream C ObjectInputStream D InputStreamReader 答案:D

解析:Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式。

面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和OutputStream的子类。

面向字符的操作为以字符为单位对数据进行操作,在读的时候将二进制数据转为字符,在写的时候将字符转为二进制数据,这些类都是Reader和Writer的子类。

总结:以InputStream(输入)/OutputStream(输出)为后缀的是字节流; 以Reader(输入)/Writer(输出)为后缀的是字符流。 扩展:Java流类图结构,一目了然,解决大部分选择题:

14. Java接口的修饰符可以为()

A private B protected C final D abstract 答案:CD

解析:接口很重要,为了说明情况,这里稍微啰嗦点:

(1)接口用于描述系统对外提供的所有服务,因此接口中的成员常量和方法都必须是公开(public)类型的,确保外部使用者能访问它们;

(2)接口仅仅描述系统能做什么,但不指明如何去做,所以接口中的方法都是抽象(abstract)方法;

(3)接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态(static)变量;

(4)接口的中的变量是所有实现类共有的,既然共有,肯定是不变的东西,因为变化的东西也不能够算共有。所以变量是不可变(final)类型,也就是常量了。

(5) 接口中不可以定义变量?如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为来修改属性。有的人会说了,没有关系,可以通过 实现接口的对象的行为来修改接口中的属性。这当然没有问题,但是考虑这样的情况。如果接口 A 中有一个public 访问权限的静态变量 a。按照 Java 的语义,我们可以不通过实现接口的对象来访问变量 a,通过 A.a = xxx; 就可以改变接口中的变量 a 的值了。正如抽象类中是可以这样做的,那么实现接口 A 的所有对象也都会自动拥有这一改变后的 a 的值了,也就是说一个地方改变了 a,所有这些对象中 a 的值也都跟着变了。这和抽象类有什么区别呢,怎么体现接口更高的抽象级别呢,怎么体现接口提供的统一的协议呢,那还要接口这种抽象来做什么呢?所以接口中 不能出现变量,如果有变量,就和接口提供的统一的抽象这种思想是抵触的。所以接口中的属性必然是常量,只能读不能改,这样才能为实现接口的对象提供一个统 一的属性。

通俗的讲,你认为是要变化的东西,就放在你自己的实现中,不能放在接口中去,接口只是对一类事物的属性和行为更高层次的抽象。对修改关闭,对扩展(不同的实现 implements)开放,接口是对开闭原则的一种体现。 所以:

接口的方法默认是public abstract;

接口中不可以定义变量即只能定义常量(加上final修饰就会变成常量)。所以接口的属性默认是public static final 常量,且必须赋初值。

注意:final和abstract不能同时出现。

15. 不通过构造函数也能创建对象吗() A 是 B 否 答案:A

解析:Java创建对象的几种方式(重要):

(1) 用new语句创建对象,这是最常见的创建对象的方法。

(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。

(3) 调用对象的clone()方法。

(4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。

(1)和(2)都会明确的显式的调用构造函数 ;(3)是在内存上对已有对象的影印,所以不会调用构造函数 ;(4)是从文件中还原类的对象,也不会调用构造函数。

16. ArrayList list = new ArrayList(20);中的list扩充几次() A 0 B 1 C 2 D 3 答案:A

解析:这里有点迷惑人,大家都知道默认ArrayList的长度是10个,所以如果你要往list里添加20个元素肯定要扩充一次(扩充为原来的1.5倍),但是这里显示指明了需要多少空间,所以就一次性为你分配这么多空间,也就是不需要扩充了。

17. 下面哪些是对称加密算法() A DES B AES C DSA D RSA 答案:AB

解析:常用的对称加密算法有:DES、3DES、RC2、RC4、AES 常用的非对称加密算法有:RSA、DSA、ECC 使用单向散列函数的加密算法:MD5、SHA

18.新建一个流对象,下面哪个选项的代码是错误的?() A)new BufferedWriter(new FileWriter(\

B)new BufferedReader(new FileInputStream(\ C)new GZIPOutputStream(new FileOutputStream(\ D)new ObjectInputStream(new FileInputStream(\ 答案:B

解析:请记得13题的那个图吗?Reader只能用FileReader进行实例化。

19. 下面程序能正常运行吗() [java] view plaincopy

1. public class NULL { 2.

3. public static void haha(){

4. System.out.println(\); 5. }

6. public static void main(String[] args) { 7. ((NULL)null).haha(); 8. } 9. 10. }

答案:能正常运行

解析:输出为haha,因为null值可以强制转换为任何java类类型,(String)null也是合法的。但null强制转换后是无效对象,其返回值还是为null,而static方法的调用是和类名绑定的,不借助对象进行访问所以能正确输出。反过来,没有static修饰就只能用对象进行访问,使用null调用对象肯定会报空指针错了。这里和C++很类似。

20. 下面程序的运行结果是什么() [java] view plaincopy

1. class HelloA { 2.

3. public HelloA() {

4. System.out.println(\); 5. } 6.

7. { System.out.println(\A class\); } 8.

9. static { System.out.println(\A\); } 10. 11. }

12.

13. public class HelloB extends HelloA { 14. public HelloB() {

15. System.out.println(\); 16. } 17.

18. { System.out.println(\B class\); } 19.

20. static { System.out.println(\B\); } 21.

22. public static void main(String[] args) { 23. new HelloB(); 24. } 25. 26. }

答案:

static Astatic B I'm A class HelloA

I'm B class HelloB

解析:说实话我觉得这题很好,考查静态语句块、构造语句块(就是只有大括号的那块)以及构造函数的执行顺序。 对象的初始化顺序:(1)类加载之后,按从上到下(从父类到子类)执行被static修饰的语句;(2)当static语句执行完之后,再执行main方法;(3)如果有语句new了自身的对象,将从上到下执行构造代码块、构造器(两者可以说绑定在一起)。

下面稍微修改下上面的代码,以便更清晰的说明情况: [java] view plaincopy

1. class HelloA { 2.

3. public HelloA() {

4. System.out.println(\); 5. } 6.

7. { System.out.println(\A class\); } 8.

9. static { System.out.println(\A\); } 10. 11. } 12.

13. public class HelloB extends HelloA { 14. public HelloB() {

15. System.out.println(\); 16. } 17.

18. { System.out.println(\B class\); } 19.

20. static { System.out.println(\B\); } 21.

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

24. System.out.println(\start-------\); 25. new HelloB(); 26. new HelloB();

27. System.out.println(\end-------\); 28. } 29. }

此时输出结果为:

static Astatic B-------main start------- I'm A class

HelloA

I'm B class HelloB

I'm A class HelloA

I'm B class HelloB

-------main end-------

21. getCustomerInfo()方法如下,try中可以捕获三种类型的异常,如果在该方法运行中产生了一个IOException,将会输出什么结果() [java] view plaincopy

1. public void getCustomerInfo() { 2.

3. try { 4.

5. // do something that may cause an Exception 6.

7. } catch (java.io.FileNotFoundException ex) { 8.

9. System.out.print(\); 10.

11. } catch (java.io.IOException ex) { 12.

13. System.out.print(\); 14.

15. } catch (java.lang.Exception ex) { 16.

17. System.out.print(\); 18.

19. } 20.

21. } A IOException!

BIOException!Exception!

CFileNotFoundException!IOException!

DFileNotFoundException!IOException!Exception! 答案:A

解析:考察多个catch语句块的执行顺序。当用多个catch语句时,catch语句块在次序上有先后之分。从最前面的catch语句块依次先后进行异常类型匹配,这样如果父异常在子异常类之前,那么首先匹配的将是父异常类,子异常类将不会获得匹配的机会,也即子异常类型所在的catch语句块将是不可到达的语句。所以,一般将父类异常类即Exception老大放在catch语句块的最后一个。

22. 下面代码的运行结果为:()

[java] view plaincopy

1. import java.io.*; 2. import java.util.*; 3.

4. public class foo{ 5.

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

8. String s; 9.

10. System.out.println(\ + s); 11.

12. } 13.

14. }

A 代码得到编译,并输出“s=” B 代码得到编译,并输出“s=null”

C 由于String s没有初始化,代码不能编译通过

D 代码得到编译,但捕获到 NullPointException异常 答案:C

解析:开始以为会输出null什么的,运行后才发现Java中所有定义的基本类型或对象都必须初始化才能输出值。

23. System.out.println(\的输出结果应该是()。

A 52 B7 C2 D5 答案:A

解析:没啥好说的,Java会自动将2转换为字符串。

24. 指出下列程序运行的结果 () [java] view plaincopy

1. public class Example { 2.

3. String str = new String(\); 4.

5. char[] ch = { 'a', 'b', 'c' }; 6.

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

9. Example ex = new Example(); 10.

11. ex.change(ex.str, ex.ch); 12.

13. System.out.print(ex.str + \and \); 14.

15. System.out.print(ex.ch); 16.

17. } 18.

19. public void change(String str, char ch[]) { 20.

21. str = \ok\; 22.

23. ch[0] = 'g'; 24.

25. } 26. }

A、 good and abc B、 good and gbc C、 test ok and abc D、 test ok and gbc 答案:B

解析:大家可能以为Java中String和数组都是对象所以肯定是对象引用,然后就会选D,其实这是个很大的误区:因为在java里没有引用传递,只有值传递

这个值指的是实参的地址的拷贝,得到这个拷贝地址后,你可以通过它修改这个地址的内容(引用不变),因为此时这个内容的地址和原地址是同一地址,

但是你不能改变这个地址本身使其重新引用其它的对象,也就是值传递,可能说的不是很清楚,下面给出一个完整的能说明情况的例子吧: [java] view plaincopy 1. package test; 2. 3. /**

4. * @description Java中没有引用传递只有值传递 5. *

6. class Person { 7.

8. private String name; 9.

10. private String sex; 11.

12. public Person(String x, String y) { 13. this.name = x; 14. this.sex = y; 15. } 16.

17. // 重写toString()方法,方便输出 18. public String toString() { 19.

20. return name + \\ + sex; 21. } 22.

23. // 交换对象引用

24. public static void swapObject(Person p1, Person p2) { 25. Person tmp = p1; 26. p1 = p2; 27. p2 = tmp; 28. } 29.

30. // 交换基本类型

31. public static void swapInt(int a, int b) { 32. int tmp = a; 33. a = b; 34. b = tmp; 35. } 36.

37. // 交换对象数组

38. public static void swapObjectArray(Person[] p1, Person[] p2) { 39. Person[] tmp = p1; 40. p1 = p2; 41. p2 = tmp; 42. } 43.

44. // 交换基本类型数组

45. public static void swapIntArray(int[] x, int[] y) { 46. int[] tmp = x; 47. x = y; 48. y = tmp; 49. } 50.

51. // 改变对象数组中的内容

52. public static void changeObjectArray(Person[] p1, Person[] p2) { 53. Person tmp = p1[1]; 54. p1[1] = p2[1]; 55. p2[1] = tmp; 56.

57. // 再将p1[1]修改

58. Person p = new Person(\, \); 59. p1[1] = p; 60. } 61.

62. // 改变基本类型数组中的内容

63. public static void changeIntArray(int[] x, int[] y) { 64. int tmp = x[1];

65. x[1] = y[1]; 66. y[1] = tmp; 67.

68. x[1] = 5; 69. } 70. } 71.

72. public class ByValueTest { 73.

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

76. // 建立并构造两个对象

77. Person p1 = new Person(\, \); 78. Person p2 = new Person(\, \); 79.

80. System.out.println(\对象交换前:p1 = \ + p1.toString()); 81. System.out.println(\对象交换前:p2 = \ + p2.toString()); 82.

83. // 交换p1对象和p2对象 84. Person.swapObject(p1, p2);

85. // 从交换结果中看出,实际对象并未交换

86. System.out.println(\对象交换后:p1 = \ + p1.toString()); 87. System.out.println(\对象交换后:p2 = \ + p2.toString()); 88.

89. // 建立两个对象数组

90. Person[] arraya = new Person[2]; 91. Person[] arrayb = new Person[2]; 92.

93. // 分别构造数组对象

94. arraya[0] = new Person(\, \); 95. arraya[1] = new Person(\, \); 96. arrayb[0] = new Person(\, \); 97. arrayb[1] = new Person(\, \); 98.

99. System.out.println('\\n' + \对象数组交换前:arraya[0] = \

100. + arraya[0].toString() + \arraya[1] = \ 101. + arraya[1].toString());

102. System.out.println(\对象数组交换前:arrayb[0] = \

103. + arrayb[0].toString() + \arrayb[1] = \ 104. + arrayb[1].toString()); 105.

106. // 交换这两个对象数组

107. Person.swapObjectArray(arraya, arrayb);

108. System.out.println('\\n' + \对象数组交换后:arraya[0] = \ 109. + arraya[0].toString() + \arraya[1] = \ 110. + arraya[1].toString());

111. System.out.println(\对象数组交换后:arrayb[0] = \

112. + arrayb[0].toString() + \arrayb[1] = \ 113. + arrayb[1].toString()); 114.

115. // 建立两个普通数组

116. int[] a = new int[2]; 117. int[] b = new int[2]; 118.

119. // 给数组个元素赋值

120. for (int i = 0; i < a.length; i++) { 121. a[i] = i;

122. b[i] = i + 1; 123. }

124.

125. System.out.println('\\n' + \基本类型数组交换前:

a[0] = \ + a[0] + \a[1] = \ + a[1]); 126. System.out.println(\基本类型数组交换前:

b[0] = \ + b[0] + \b[1] = \ + b[1]); 127.

128. // 交换两个基本类型数组 129. Person.swapIntArray(a, b);

130. System.out.println('\\n' + \基本类型数组交换后:

a[0] = \ + a[0] + \a[1] = \ + a[1]); 131. System.out.println(\基本类型数组交换后:

b[0] = \ + b[0] + \b[1] = \ + b[1]); 132.

133. // 改变对象数组的内容

134. Person.changeObjectArray(arraya, arrayb);

135. System.out.println('\\n' + \对象数组内容交换并改变后:

arraya[1] = \ + arraya[1].toString());

136. System.out.println(\对象数组内容交换并改变后:

arrayb[1] = \ + arrayb[1].toString()); 137.

138. // 改变基本类型数组的内容 139. Person.changeIntArray(a, b);

140. System.out.println('\\n' + \基本类型数组内容交换并改变后:

a[1] = \ + a[1]);

141. System.out.println(\基本类型数组内容交换并改变后:b[1] = \ + b[1]); 142. } 143. }

程序有些啰嗦,但能反映问题,该程序运行结果为: 对象交换前:p1 = Alexia female 对象交换前:p2 = Edward male

对象交换后:p1 = Alexia female 对象交换后:p2 = Edward male

对象数组交换前:arraya[0] = Alexia female, arraya[1] = Edward male 对象数组交换前:arrayb[0] = jmwang female, arrayb[1] = hwu male

对象数组交换后:arraya[0] = Alexia female, arraya[1] = Edward male 对象数组交换后:arrayb[0] = jmwang female, arrayb[1] = hwu male

基本类型数组交换前:a[0] = 0, a[1] = 1 基本类型数组交换前:b[0] = 1, b[1] = 2

基本类型数组交换后:a[0] = 0, a[1] = 1 基本类型数组交换后:b[0] = 1, b[1] = 2

对象数组内容交换并改变后:arraya[1] = wjl male 对象数组内容交换并改变后:arrayb[1] = Edward male

基本类型数组内容交换并改变后:a[1] = 5 基本类型数组内容交换并改变后:b[1] = 1

说明:不管是对象、基本类型还是对象数组、基本类型数组,在函数中都不能改变其实际地址但能改变其中的内容。

25. 要从文件\中读出第10个字节到变量c中,下列哪个方法适合? ()

A FileInputStream in=new FileInputStream(\B FileInputStream in=new FileInputStream(\C FileInputStream in=new FileInputStream(\

D RandomAccessFile in=new RandomAccessFile(\

答案:A?D? 解析:long skip(long n)作用是跳过n个字节不读,主要用在包装流中的,因为一般流(如FileInputStream)只能顺序一个一个的读不能跳跃读,但是包装流可以用skip方法跳跃读取。那么什么是包装流呢?各种字节节点流类,它们都只具有读写字节内容的方法,以FileInputStream与FileOutputStream为例,它们只能在文件中读取或者向文件中写入字节,在实际应用中我们往往需要在文件中读取或者写入各种类型的数据,就必须先将其他类型的数据转换成字节数组后写入文件,或者从文件中读取到的字节数组转换成其他数据类型,想想都很麻烦!!因此想通过FileOutputStream将一个浮点小数写入到文件中或将一个整数写入到文件时是非常困难的。这时就需要包装类DataInputStream/DataOutputStream,它提供了往各种输入输出流对象中读入或写入各种类型的数据的方法。 DataInputStream/DataOutputStream并没有对应到任何具体的流设备,一定要给它传递一个对应具体流设备的输入或输出流对象,完成类似DataInputStream/DataOutputStream功能的类就是一个包装类,也叫过滤流类或处理流类。它对InputOutStream/OutputStream流类进行了包装,使编程人员使用起来更方便。其中DataInputStream包装类的构造函数语法:public DataInputStream(InputStream in)。包装类也可以包装另外一个包装类。

首先BC肯定 是错的,那A正确吗?按上面的解析应该也不对,但我试了下,发现A也是正确的,与网上解析的资料有些出入,下面是我的code: [java] view plaincopy

1. import java.io.FileInputStream; 2. import java.io.FileOutputStream; 3. import java.io.IOException; 4.

5. public class FileStreamTest { 6.

7. public static void main(String[] args) throws IOException { 8. // TODO Auto-generated method stub 9.

10. FileOutputStream out = new FileOutputStream(\); 11.

12. byte[] b = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 13. out.write(b); 14. out.close(); 15.

16. FileInputStream in = new FileInputStream(\); 17. in.skip(9); // 跳过前面的9个字节 18. int c = in.read();

19. System.out.println(c); // 输出为10 20. in.close();

那么D呢,RandomAccessFile是IO包的类,但是其自成一派,从Object直接继承而来。可以对文件进行读取和写入。支持文件的随机访问,即可以随机读取文件中的某个位置内容,这么说RandomAccessFile肯定可以达到题目的要求,但是选项有些错误,比如RandomAccessFile的初始化是两个参数而非一个参数,采用的跳跃读取方法是skipBytes()而非skip(),即正确的写法是:

RandomAccessFile in = new RandomAccessFile(\in.skipBytes(9);int c = in.readByte();

这样也能读到第十个字节,也就是A和D都能读到第十个字节,那么到底该选哪个呢?A和D有啥不同吗?求大神解答~~~

26. 下列哪种异常是检查型异常,需要在编写程序时声明 ()

ANullPointerException BClassCastException CFileNotFoundException D IndexOutOfBoundsException 答案:C

解析:看第2题的解析。

27. 下面的方法,当输入为2的时候返回值是多少?() [java] view plaincopy

1. public static int getValue(int i) { 2. int result = 0; 3. switch (i) { 4. case 1:

5. result = result + i; 6. case 2:

7. result = result + i * 2; 8. case 3:

本文来源:https://www.bwwdw.com/article/4cvd.html

Top