java复习题 下载本文

1、下列关于java语言特点描述错误的是

A.Java语言不支持指针 B.Java具有自动垃圾回收的机制

C.Java只能运行在Window和Linux平台 D.Java允许多个线程同时执行 2下列关于JDK的说法中,错误的是?

A.JDK是Java开发工具包的简称 B.JDK包括Java编译器、Java文档生成工具、Java打包工具等 C.安装JDK后,还需要单独安装JRE D.JDK是整个Java的核心 答案:C 解析:SUN公司提供了一套Java开发环境,简称JDK(Java Development Kit),它是整个Java的核心,其中包括Java编译器、Java运行工具、Java文档生成工具、Java打包工具等。JDK工具中自带了一个JRE工具,也就是说开发环境中包含运行环境,这样一来,开发人员只需要在计算机上安装JDK即可,不需要专门安装JRE工具了。 3下面关于path环境变量的说法中,错误的是?() A.path环境变量是系统环境变量中的一种,它用于保存一系列的路径,每个路径之间以分号分隔

B.在命令行窗口输入“set path”命令,可以查看当前系统的path环境变量

C.在命令窗口对环境变量进行的任何修改只对当前窗口有效,一旦关闭窗口,所有的设置都会被取消

D.配置系统环境变量时以英文半角逗号(,)分隔每一个路径 答案:D

解析:配置系统环境变量时时以英文半角分号(;)分隔每一个路径的。

4安装好JDK后,在其bin目录下有许多exe可执行文件,其中java.exe命令的作用是以下哪一种( )

A.Java文档制作工具B.Java解释器C.Java编译器D.Java启动器 答案:B

1下列选项中,哪一个是单行注释的符号?( ) A.\\\\ B.// C./ D.\\

答案:B解析:// 双斜杠表示注释单行代码 2下列常量中,属于整型常量的是?( )

A.198 B.2e3f C.true D.null 答案:A

解析:2e3f属于浮点数常量,true属于布尔常量,null属于null常量 3下列选项中,哪个是程序的运行结果 class Test{

public static void main(String[] args) { int a = 3; int b = 6;

System.out.print(a==b); System.out.print(a=b); } }

A.false false true false B.false false true true C.false true true false D.true false false true 答案:C解析:3==6(错),3<6(对),3!=6(对),3>=6(错) 4若x=6 ,y=5 则表达式int max=x>y?x:y 的结果为()

A.6 B.5 C.true D.false 答案:A

解析:三元表达式语法结构:判断条件 ? 表达式1 : 表达式2当判断条件成立时,运算结果为表达式1的值,否则结果为表达式2的值 5请阅读下面的程序片段 boolean b=true; if(b=false) {

System.out.println(\} else if(b) {

System.out.println(b); } else if(!b) {

System.out.println(\} else {

System.out.println(\}

程序的执行结果是( )

A.a B.b C.c D.d 答案:C

解析:条件语句的值为false,所以值为false的语句才可以输出,这里用到了逻辑运算符!(非)即!true 的值为false,因此输出结果是c 6请阅读下面的程序

public class SwitchDemo3 {

public static void main(String[] args) { char c = ?B?; switch ? { case ?A?:

System.out.println(“优”); break; case ?B?:

System.out.println(“良”); break; case ?C?:

System.out.println(“差”); break; } } }

下列选项中,哪一个才是程序的运行结果

A.优 B.良 C.差 D.编译失败 答案:B

解析:char c=’B’与case ‘B’相匹配,因此输出结果为“良” 7请阅读下面的程序 Public class Test {

public static void main(String[] args) { int a = 0; int b = 0;

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

a = i % 2;

while (a-- >= 0) { b++; } }

System.out.println(\} }

下列选项中,哪一个是正确的运行结果( )

A.a=8,b=-2 B.a=-2,b=8 C.a=3,b=0 D.a=0,b=3

答案:B解析:本题中有两个循环语句,分别是外层循环的for语句和内层循环的while语句,首先程序会执行for循环中的语句,并执行循环体中的表达式a=i%2,计算出a的值,然后在进入while循环计算b的值,循环往复直到外层循环条件i>5为止 8阅读下面的程序 public class Test {

public static void main(String[] args) { for(int x = 0 ; x <=3 ; x++){ continue;

System.out.print(x%2); } } }

运行结果正确的是

A.跳出循环,无输出 B.0121 C.01 D.0123

答案:A解析:continue语句的作用是终止本次循环,因此contine后的代码永远不会被执行,都是无效代码

9____关键字用于包的声明 答案:package解析: 10【】关键字用于引入包 答案:import

11若x = 2,则表达式 ( x + + )/3 的值是【】 答案:0 12若int a =2; a+=3;执行后,变量a的值为【】 答案:5 13方法重载的条件是:方法名相同,【】不相同 答案:参数列表 解析:方法的重载与返回值类型无关,它只有两个条件,一是方法名相同,二是参数列表(参数个数或参数类型)不相同

14定义一个方法时,要有访问修改符、返回值类型、方法名、【】 答案:参数列表解析:方法的定义比较严格,必须要有访问修饰符、返回值类型、方法名称、参数列表(参数类型、参数名称)

“隐藏对象的属性和实现细节,仅对外提供公有的方法”描述的是面向对象的哪个特征( )

A.封装 B.继承 C.多态 D.以上都不是

答案:A解析:封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想。

2下列选项中,不属于面向对象特征的是( )。

A.继承性 B.封装性 C.跨平台性 D.多态性

答案:C解析:面向对象有三种特性,分别是封装性、继承性和多态性。跨平台性是Java

语言的特点,而不是面向对象的特征。 3请阅读下面的代码 class A{ int x;

static int y;

void fac(String s){

System.out.println(“字符串:”+s); } }

下列选项中描述正确的是( )

A.x , y和s 都是成员变量 B.x 是实例变量,y是类变量,s是局部变量 C.x和y是实例变量,s是参数 D.x ,y和s都是实例变量

答案:B解析:在方法中声明的s是局部变量,使用static关键字修饰的y是类变量,在类中定义的x是实例变量。 4请阅读下面的程序代码 Class Person{ void say(){

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

class Example{

public static void main(String[] args){ Person p2 = new Person(); Person p1 = new Person(); p2.say(); p1.say(); p2=null; p2.say(); } }

下列关于程序运行结果的描述中,正确的是()

A.输出1个hello B.输出2个hello后会抛出异常

C.输出3个hello后会抛出异常 D.不会输出hello,直接抛出异常 答案:B解析:程序中创建了2个Person对象p1、p2,并分别调用了say()方法输出两个hello,然后将p2对象置为null,使p2对象失去了引用,因此再次使用p2对象调用say()方法时,会抛出异常。

5下列关键字中,用于创建类的实例对象的是( )。 A.class B.new C.private D.void

答案:B解析:Java中使用new关键字创建对象,class用于定义一个类,private是权限修饰符,表示表示只能在本类中访问,void表示无返回值 6下面哪个关键字用于将类中的属性私有化( )

A.default B.public C.private D.protected 答案:C 7下面关于调用构造方法的描述中,正确的是( )

A.构造方法在类定义的时候被调用 B.构造方法在创建对象的时候被调用

C.构造方法在调用对象方法时被调用 D.构造方法在使用对象的变量时被调用

答案:B解析:调用构造方法创建对象构造方法的作用是为对象中的属性赋值,在创建对象时,构造方法就会被调用。

8下列关于构造方法定义的描述中,错误的是( )。

A.方法名与类名相同 B.在方法名的前面没有返回值类型的声明C.当定义了有参构造方法,系统默认的无参构造方法依然存在D.在方法中不能使用return语句返回一个值 答案:C

9下列关于构造方法的描述,错误的是( )。

A、一个类中只能定义一个构造方法B、一个类中可以定义多个构造方法C、如果在一个类中定义有参的构造方法,jvm就不会提供默认的无参构造方法D、构造方法的作用是用来给属性进行初始化的 答案:A

10Person p = new Person(“张三”,23);这条语句会调用下列哪个构造方法给属性进行初始化( )

A.public Person(){} B.public Person(String name,int age) { this.name = name; this.age = age; } C.public Person(int age,String name) { this.age = age; this.name = name; } D.public Person(String name) { this.name = name; }

答案:B解析:创建对象时会找到匹配的构造方法给属性进行初始化,由于Person p = new Person(“张三”,23);这条语句中有两个参数,而且第1个参数是String类型的,第2个参数是int类型的,因此会调用B选项中的构造方法。

11在Java中,要想让一个类继承另一个类,可以使用以下哪个关键字? A.inherits B.implements C.extends D.modifies 答案:C 12在类的继承关系中,需要遵循以下哪个继承原则?

A.多重 B.单一 C.双重 D.不能继承 答案:B 13已知类的继承关系如下: class Employee;

class Manager extends Employeer; class Director extends Employee; 则以下语句能通过编译的有哪些?

A.Employee e=new Manager(); B.Director d=new Manager(); C.Director d=new Employee(); D.Manager m=new Director(); 答案:A

14编译运行下面的程序,结果是什么? public class A {

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

void test() {

System.out.print(\ } }

class B extends A { void test() { super.test();

System.out.print(\ } }

A.产生编译错误 B.代码可以编译运行,并输出结果AB

C.代码可以编译运行,但没有输出 D.编译没有错误,但会产生运行时异常 答案:B

15public class Example {

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

int rst = 4/0;

System.out.println(\ }catch(Exception e){

System.out.println(\语句块执行\ return; }finally{

System.out.println(\语句块执行\ }

System.out.println(\程序继续向下执行\ } }

运行以上程序,输出的结果是( )

A.catch语句块执行B.catch语句块执行 程序继续向下执行

C.catch语句块执行 finally语句块执行D.0 程序继续向下执行 答案:C解析:在try语句块中发生了除零异常,因此会执行catch语句块中的内容,输出\语句块执行\,finally语句块中表示一定会执行的语句,虽然catch中有return,但依然会输出\语句块执行\

16下面程序运行的结果是( ) class Demo{

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

int x = div(1,2); }catch(Exception e){ System.out.println(e); }

System.out.println(x) }

public static int div(int a,int b){ return a / b ; } }

A.输出1 B.输出0 C.输出0.5 D.编译失败 答案:C 17在try{}catch(______e){}横线处需要填写的是( ) A.异常对象 B.异常类 C.任意对象 D.任意类

答案:B解析:catch代码块需要一个形参指明它所能够接收的异常类型,这个参数的类型

必须是Exception类或其子类

18以下对于try?catch语句描述正确的是( )

A.try?catch语句处理程序中的错误B.try...catch语句处理程序中的bug C.try...catch语句处理程序中的异常D.以上说法都不正确 答案:C解析:try...catch语句处理程序中的异常

19下列选项中,关于final修饰成员变量的说法正确的是?( )

A.被final修饰的成员变量可以被多次赋值B.被final修饰的成员变量为常量 C.final只能在接口中修饰成员变量D.以上都不对

答案:B解析:被final修饰的变量为常量,不能被第二次赋值或改变引用 20下列选项中,不可以被final修饰的是?( ) A.接口 B.类 C.方法 D.变量

答案:A解析:final关键字可用于修饰类、变量和方法 题目难度:★☆☆☆ 容易

21分析下面程序,哪一行代码能正确赋值?() class Demo {

public void method() {

final int num1 = 10; static int num2 = 20; abstract int num3 = 30; private int num4 = 40; } }

A.final int num1 = 10; B.static int num2 = 20; C.abstract int num3 = 30;D.private int num4 = 40; 答案:A解析:final可以修饰局部变量 22下面程序的运行结果是( ) public class Demo {

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

System.out.println(10 / 0);

System.out.println(\除法正常运行\ } catch (ArithmeticException e) {

System.out.println(\除数不能为0\ } } }

A.编译失败B.编译通过,没有结果输出C.输出:除法正常运行D.输出:除数不能为0 答案:D解析:虽然是运行时期异常,但是也可以使用try?catch语句进行处理。一旦进入处理语句就不会再回去执行

23下列选项中,用于解压jar文件的命令是( ) A.jar –c B.jar –x C.jar –v D.jar -f 答案:B解析:参数x用于解压

24下列选项中,可以导入指定包中所有类的是( )

A.package包名; B.package 包名.*; C.import 包名; D.import 包名.*;

答案:D解析:如果有时候需要用到一个包中的许多类,则可以使用“import 包名.*; ”来

导入该包下所有类

25下列关于protected的说法中,正确的是( )

A.protected修饰的方法,只能给子类使用B.protected修饰的类,类中的所有方法只能给子类使用C.如果一个类的成员被protected修饰,那么这个成员既能被同一包下的其它类访问,也能被不同包下该类的子类访问D.以上都不对

答案:C解析:如果一个类的成员被protected访问控制符修饰,那么这个成员既能被同一包下的其它类访问,也能被不同包下该类的子类访问

26如果类的成员被( )访问控制符来修饰,则这个成员只能被该类的其它成员访问,其它类无法直接访问

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

答案:A解析:如果类的成员被private访问控制符来修饰,则这个成员只能被该类的其它成员访问,其它类无法直接访问。类的良好封装就是通过private关键字来实现的 27阅读下列的代码 public class Test {

public static void main(String[] args) { _________________________ _________________________ } }

class Outer {

static class Inner {

public void method () {

System.out.println(\ } } }

下列选项中,填写在空白处可以使程序正常运行的是()

A.Outer o = new Outer(); o.method(); B.Inner I = new Inner(); i.method(); C.Outer.Inner oi = new Outer.Inner(); oi.method(); D.以上答案都不对 答案:C 28阅读下列的程序 public class Test3 {

public static void main(String[] args) { _________________________ _________________________ } }

class Outer {

static class Inner {

public void method () {

System.out.println(\ } } }

下列选项中,可以正确输出method()方法的是( )

A、Outer o = new Outer(); o.method();

B、Inner I = new Inner(); i.method();

C、Outer.Inner oi = new Outer.Inner(); oi.method();

D、以上答案都不对 答案:C

29下列关于使用this调用构造方法的说法中,错误的是?( ) A.使用this调用构造方法的格式为this([参数1,参数2?]) B.只能在构造方法中使用this调用其它的构造方法 C.使用this调用其它构造方法的语句必须放在第一行

D.在一个类的两个构造方法中可以使用this互相调用 答案:D 30下列关于this的说法中,错误的是( )

A.只能在构造方法中使用this调用其它的构造方法,不能在成员方法中使用

B.在构造方法中,使用this调用构造方法的语句必须位于第一行,且只能出现一次 C.this关键字可以用于区分成员变量与局部变量 D.this可以出现在任何方法中 答案:D

31在Java语言中,所有的类都直接或间接继承自【】类 答案:Object 32一个类如果实现一个接口,那么它就需要实现接口中定义的全部【】,否则该类就必须定义成【】 答案:方法,抽象类

33异常的捕获通常由try、catch两部分组成,【】代码块用来存放可能发生异常,【】代码块用来处理产生的异常 答案:try,catch

34在Java语言中,允许使用已存在的类作为基础创建新的类,这种技术我们称为【】 答案:继承

35当一个对象被当成垃圾从内存中释放时,它的【】方法会被自动调用。 答案: finalize() 36final修饰的方法,不能被子类【】 答案:重写 解析:final修饰的方法为最终方法,不能被重写

37final修饰的局部变量只能被赋值【】次 答案:一 解析:final最终变量,只能赋值一次

38RuntimeException类及其子类都是【】异常 答案:运行时 39自定义异常需要继承【】类 答案:Exception 解析:Exception是所有异常的超类

40构造方法没有返回值类型,因此不能使用【】语句。答案:return 41构造方法的名称必须和【】保持一致。 答案:类名

42如果在某一个方法中定义的局部变量与成员变量同名时,在该方法中通过变量名访问到的是【】。答案:局部变量 43类与对象的关系中,【】用于描述多个对象的共同特征,它是对象的模板。【】用于描述现实中的个体,它是类的实例。答案:类,对象

解析:类用于描述多个对象的共同特征,它是对象的模板。对象用于描述现实中的个体,它是类的实例。

44请简述面向对象的三大特征。 答案:封装、继承、多态

面向对象的特点主要可以概括为封装性、继承性和多态性。

其中封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想。

继承性主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展。

多态性指的是在程序中允许出现重名现象,它指在一个类中定义的属性和方法被其它类继承后,它们可以具有不同的数据类型或表现出不同的行为,这使得同一个属性和方法在不同的类中具有不同的语义。

45简述成员变量与局部变量的区别。 答案:1. 定义位置的区别:

1)成员变量是定义在方法之外类之内的变量,称作为成员变量(成员属性). 2)局部变量是定义在方法之内的变量。

2.生命周期的区别:

1)成员变量是随着对象的创建而存在,随着对象的消失而消失。

2)局部变量随着方法的调用执行到了创建局部变量的语句的时候存在,局部变量一旦出了自己的作用域马上从内存中消失。

3.存储位置的区别:

1)成员变量是存储于堆内存中的。 2)局部变量是存储于栈内存中的。 4. 初始值的区别:

1)成员变量有默认的初始值: int 0

double 0.0 float 0.0f; char ' ' String null boolean false

2)局部变量没有默认的初始值,要先初始化才能使用。

46请简述类与对象之间的关系。

答案:类是同一种类型对象的抽象,它用于描述一组对象的共同特征和行为。

面向对象的编程思想力图在程序中对事物的描述与该事物在现实中的形态保持一致。为了做到这一点,面向对象的思想中提出两个概念,即类和对象。其中,类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体。 47请简要说明使用封装的好处。

答案:1.提高了数据的安全性。2.隐藏了实现细节。3.操作简单、方便。 49请阅读下面的程序,在空白处填写正确的代码,定义一个无参构造方法。 public class Person { public ____() {} }答案:Person 解析:在一个类中定义的方法如果同时满足以下三个条件,该方法称为构造方法,具体如下: 构造方法的定义需要同时满足三个条件,具体如下: 1:方法名与类名相同

2:在方法名的前面没有返回值类型的声明 3:在方法中不能使用return语句返回一个值 因此,只需在横线处填写Person即可。

50请简述构造方法的特点。

答案:1.构造方法名与类名相同2.在构造方法名的前面没有返回值类型的声明3.在构造方法中不能使用return语句返回一个值 51请简要说明什么是构造方法重载。

答案:与普通方法一样,构造方法也可以重载,在一个类中可以定义多个构造方法,只要每个构造方法的参数类型或参数个数不同即可。

52阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果并分析出现此结果的原因。否则请说明编译失败的原因。 class Cat{

void mi( ) throws NullPointerException{ System.out.println( \ } }

public class SmallCat extends Cat{ void mi( ) throws Exception{

System.out.println( \ }

public static void main( String[] a ) throws Exception{ Cat cat = new SmallCat(); cat.mi(); } } 答案:程序编译失败。在子类中,如果要覆盖父类的一个方法,而父类中的方法声明了throws异常,则子类的方法也可以抛出异常,但切记子类方法抛出的异常只能是父类方法抛出的异常的同类或子类,而不能是父类。

53在横线处填入正确的代码,可以让局部变量的age给成员变量的age赋值。 class Person { int age;

public Person(int age) {

______________//让局部变量的age给成员变量的age赋值 }

public int getAge() { return this.age; } } 答案:

this.age = age;

54阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果并分析出现此结果的原因。否则请说明编译失败的原因。 public class Example {

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

System.out.println(4 / 0);

System.out.println(\程序没有异常\

} catch (Exception e) {

System.out.println(\程序发生异常\ return; } finally {

System.out.println(\语句执行\ } } }

答案:程序发生异常 finally语句执行

解析:try语句中存放可能发生异常的语句,catch语句用于对异常进行处理,finally中的语句表示一定会被执行的语句。在进行4/0运算时,程序发生了除0异常,catch语句捕获异常执行并输出“程序发生异常”,此时在catch语句中还有一个return语句,但是这并不会影响finally语句的正常运行,程序仍然输出“finally语句执行”,除非在catch语句中执行System.exit(0);退出虚拟机,finally语句才不执行。 55简述抽象类和接口的区别?

答案:在Java中,使用abstract关键字修饰的类称之为抽象类。抽象类是不能被实例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。抽象类通常用于表示一种抽象的概念。接口可以说是一种特殊的抽象类,接口中只能定义常量和抽象方法。由于接口的特殊性,在定义时需要使用interface关键字。

56阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果。否则请说明编译失败的原因。 public class Outer {

public String name=\ private class Inner {

String name=\ void showName(){

System.out.println(name); } }

public static void main(String[] args) {

Inner inner = new Outer().new Inner(); System.out.println(inner.name); } }

答案:程序能够编译通过,运行的结果为“inner” 57构造方法和普通的成员方法有什么区别?

答案:构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。而普通方法只有在使用的时候才会被调用。在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用return语句返回一个值。 解析:

58阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果。否则请说明编译失败的原因。 public class Demo {

public static void main(String[] args) { new Object(){

public void show(){

System.out.println(\ } }.show(); }

} 答案:helloworld解析:匿名内部类继承了Object类,并自定义了一个show()方法, * 使用匿名内部类调用show()方法,调用的是子类也就是匿名内部类自身的show()方法, * 编译和运行均能正常进行,因此打印输出了helloworld 60请简要概述try?catch语句中,try和catch的作用

答案:try中编写被检查可能出现异常的代码,catch用于抓住或者不捕获异常,并处理异常 解析:

61简述thorws的作用

答案:throws总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常。对大多数Exception子类来说,Java 编译器会强迫你声明在一个成员函数中抛出的异常的类型。如果异常的类型是Error或 RuntimeException, 或它们的子类,这个规则不起作用, 因为这在程序的正常部分中是不期待出现的。 如果你想明确地抛出一个RuntimeException,你必须用throws语句来声明它的类型

解析:Throws用于声明方法抛出异常,如果是RuntimeException,可以不用抛出。但是如果是编译异常,必须使用throws抛出 62运行时异常的特点是?

答案:运行时异常的特点是Java编译器不会对其进行检查 解析:RuntimeException类及其子类都是运行时异常。运行时异常的特点是Java编译器不会对其进行检查,也就是说,当程序中出现这类异常时,即使没有使用try..catch语句捕获或使用throws关键字声明抛出,程序也能编译通过

63简要概述,当用final修饰符修饰类、变量和方法时,被修饰者有哪些特性

答案:final关键字可用于修饰类、变量和方法,它有“这是无法改变的”或者“最终”的含义,因此被final修饰的类、变量和方法将具有以下特性: 1、final修饰的类不能被继承。

2、final修饰的方法不能被子类重写。

3、final修饰的变量(成员变量和局部变量)是常量,只能赋值一次。 64请简述Java中继承的概念以及使用继承的好处

答案:概念:在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。 好处:继承性主要描述的是类与类之间的关系,通过继承,可以无需重新编写原有类的情况下,对原有类的功能进行使用和扩展。

65请简要说明单例设计模式的实现步骤。

答案:1) 使用private关键字私有化构造方法;2) 在类的内部创建一个该类的实例对象,并使用私有的静态变量引用该对象;3) 为了让类的外部能够获得类的实例对象,需要定义一个公有的静态方法,用于返回该类实例。

66请问将一个类设计成单例设计模式(饿汉式),需要哪些步骤?

答案:1.私有构造函数2.创建私有的静态的本类对象3.对外提供公有的静态的返回值类型为本类的方法

1下列关于ServerSocket类的说法,错误的是?( )

A.ServerSocket类是被final关键字修饰的类,因此没有子类B.ServerSocket类用于表示服务器端C.ServerSocket类中的accept()方法会阻塞D.创建ServerSocket对象时可以指定需绑定到的端口 答案:A

解析:ServerSocket类是一个普通方法,没有被final关键字所修饰,它有一个直接已知子类是SSLServerSocket

2以下哪个类用于实现TCP通信的客户端程序?()

A.ServerSocket B.Socket C.Client D.Server 答案:B 3以下哪个方法是DatagramSocket类用于发送数据的方法?() A.receive() B.accept() C.set() D.send() 答案:D

4下列方法中,java.net.ServerSocket类用于接收客户端请求的方法是( ) A.get() B.accept() C.receive() D.connect() 答案:B 5下列关于UDP协议的说法,错误的是( )

A.UDP是无连接通信协议B.UDP协议消耗资源小,通信效率高

C.使用UDP协议时可能会丢失数据D.在传输重要数据时建议使用UDP协议

答案:D解析:正是由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议。

6以下对File类的public boolea isFile()方法的描述,哪个是正确的?

A.判断该File对象所对应的是否是文件B.判断该File对象所对应的是否是目录 C.返回文件的最后修改时间D.在当前目录下生成指定的目录 答案:A

7下列关于InetAddress类的getHostName()方法的返回值的说法中,错误的是( ) A.如果创建的InetAddress对象是用主机名创建的,则将该主机名返回

B.如果不是使用主机名创建的InetAddress对象,则将根据IP地址反向查找对应的主机名,找到则返回主机名

C.该方法用于返回某个IP 地址的主机名

D.如果不是使用主机名创建的InetAddress对象,则将根据IP地址反向查找对应的主机名,找不到则返回null

答案:D解析:如果不是使用主机名创建的InetAddress对象,则将根据IP地址反向查找对应的主机名,找不到则返回IP地址,而不是null

8InetAddress类中能获取IP地址及主机名的方法是( )

A.getHostName() B.getLocalHost() C.getHostAddress() D.getAddress () 答案:B解析:getHostName()只能获取主机名,getHostAddress()只能获取IP地址,getAddress()获取IP地址的字节数组,getLocalHost()获取到InetAddress对象,里面包含IP地址及主机名,因此答案B正确

9要产生[20,999]之间的随机整数可以使用以下哪个表达式? A.(int)(20+Math.random()*97) B.20+(int)(Math.random()*980)

C.(int)Math.random()*999 D.20+(int)Math.random()*980 答案:B 10以下Math类的方法中,-4.4通过哪个方法运算后,结果为-5.0? A.round() B.min() C.floor() D.ceil() 答案:C 11阅读下面的程序: public class test {

public static void main(String args[]) { int i;

float f = 2.3f;

double d = 2.7;

i = ((int)Math.ceil(f)) * ((int)Math.round(d)); System.out.println(i); }

} 程序执行后,运行结果为以下哪个选项? A.9 B.5 C.6 D.6.1 答案:A 12先阅读下面的程序片段: String str1=new String(\ String str2=new String(\

StringBuffer str3=new StringBuffer(\

对于上述定义的变量,以下表达式的值为true的是哪个?

A.str1==str2; B.str1.equals(str2); C.str1==str3; D.以上都不对 答案:B 13以下选项中,哪个流中使用了缓冲区技术?

A.BuffereOutputStream B.FileInputStream C.DataOutputStream D.FileReader 答案:A 14以下选项中,哪个是FileOutputStream的父类?

A.File B.FileOutput C.OutputStream D.InputStream 答案:C 15在以下哪种情况下,线程进入就绪状态?

A.线程调用了sleep()方法时 B.线程调用了join()方法

C.线程调用了yield()方法时 D.线程调用了notify()方法 答案:D 16线程调用sleep()方法后,该线程将进入以下哪种状态?

A.就绪状态 B.运行状态 C.阻塞状态 D.死亡状态 答案:C 17处理ActionEvent事件的监听器对象需要实现哪个接口( )

A.ActionListener B.KeyListener C.KeyEvent D.KeyAdapter 答案:A 18JTextField的构造方法中,方法JTextField(String text,int column)的作用是()

A.创建一个空的文本框,初始字符串为nullB.创建一个具有指定列数的文本框,初始字符串为nullC.创建一个显示指定初始字符串的文本框D.创建一个具有指定列数、并显示指定初始字符串的文本框 答案:D

19MouseEvent类中定义了很多常量来标识鼠标动作,其中表示鼠标中键点击事件的常量是()A.BUTTON3 B.BUTTON2 C.BUTTON1 答案:B

20若想实现JRadioButton按钮之间的互斥,需要使用( )类 A.ButtonGroup B.JComboBox C.AbstractButton 答案:A

21JMenu中用于返回指定索引处的菜单项,第一个菜单项的索引为0的方法是() A.int getItemCount() B.void JMenuItem insert(JMenuItem menuItem,int pos) C.void addSeparator() D.JMenuItem getItem(int pos) 答案:D 22JScrollPane提供的方法中,用于指定水平滚动条策略,即水平滚动条何时显示在滚动面板上的方法是()

A.void setHorizontalBarPolicy(int policy) B.void setVerticalBarPolicy(int policy) C.void setViewportView(Component view) 答案:A

23在CardLayout布局管理中,用于显示parent容器的前一张卡片的方法是( ) A.void previous(Container parent) B.void show(Container parent,String name) C.void next(Container parent) D.void first(Container parent) 答案:A解析:在CardLayout布局管理中,用于显示parent容器的前一张卡片的方法是 void previous(Container parent)

24下列选项中,关于 GridLayout(网格布局管理器)的说法错误的是( )

A.GridLayout布局管理器可以设置组件的大小

B.放置在GridLayout布局管理器中的组件将自动占据网格的整个区域

C.GridLayout布局管理器中,组件的相对位置不随区域的缩放而改变,但组件的大小会随之改变,组件始终占据网格的整个区域

D.GridLayout布局管理器缺点是总是忽略组件的最佳大小,所有组件的宽高都相同

答案:A解析:GridLayout布局管理器不可以设置组件的大小,组件会自动占据网格的整个区域

25GridLayout 的三个构造方法中,能够指定容器的行数和列数以及组件之间的水平、垂直间距的是( )

A.GridLayout() B.GridLayout(int rows,int cols) C.GridLayout(int rows,int cols,int hgap,int vgap)

答案:C解析:GridLayout 的三个构造方法中,能够指定容器的行数和列数以及组件之间的水平、垂直间距的是 GridLayout(int rows,int cols,int hgap,int vgap) 26在GridBagConstraints类的常用属性中,用于设置组件在容器中的水平方向和垂直方向的权重的是( )

A.fill B.gridwidth和gridheight C.gridx和 gridy D.weightx和weighty 答案:D解析:weightx和weighty用于设置组件在容器中的水平方向和垂直方向的权重。 27下列是事件监听机制的四个步骤,请对下列步骤进行排序,使事件源实现了事件的监听机制( )

① 定义一个类实现事件监听器的接口 ② 为事件源注册事件监听器对象

③ 事件监听器调用相应的方法来处理相应的事件 ④ 创建一个事件源

A.①④②③ B.①③④② C.④①②③ D.④②①③

答案:A解析:首先需要定义一个类实现事件监听器的接口,例如Window类型的窗口需要实现WindowListener。接着通过addWindowListener()方法为事件源注册事件监听器对象,当事件源上发生事件时,便会触发事件监听器对象,由事件监听器调用相应的方法来处理相应的事件

28下列选项中,关于流式布局管理器(FlowLayout)的说法错误的是( ) A.在流式布局下,当到达容器的边界时,会自动将组件放到下一行的开始位置 B.FlowLayout布局管理器的特点就是可以将所有组件像流水一样依次进行排列

C.流式布局管理器是最简单的布局管理器 D.流式布局管理器将容器划分为五个区域 答案:D解析:流式布局管理器不可以给容器划分区域 29标准输入流对应的类型是()

A.InputStreamReader B.InputStream C.DataInputStream D.FileInputStream 答案:B解析:标准输入流对应的类型是InputStream,字节输入流 30标准输出流对应的类型是()

A.ObjectOutputStream B.FilterOutputStream C.PrintStream D.FileOutputStream 答案:C 解析:out为PrintStream类型,它是标准输出流,默认将数据输出到命令行窗口 31下列选项中,关于ByteArrayOutputStream类的描述正确的是?( ) A.ByteArrayOutputStream流中缓冲区的大小不能被定义

B.ByteArrayOutputStream流关闭后仍可被调用,并且不会产生任何IOException C.ByteArrayOutputStream流关闭后不能被使用,否则抛出IOException D.ByteArrayOutputStream流必须与ByteArrayInputStream流配对使用

答案:B解析:使用ByteArrayOutputStream(int size)构造方法便可以设置缓冲区的大小; ByteArrayOutputStream流关闭后仍可被调用,并且不会产生任何IOException。

ByteArrayOutputStream流与ByteArrayInputStream流分别对应的是字节输出流和字节输入流,没有强制要求配对使用。

32下面选项中,关于PrintStream类描述错误的是( )

A.PrintStream可以实现将基本数据类型的数据或引用数据类型的对象格式化成字符串后再输出B.PrintStream类位于IO包中,是字符输出流的子类

C.调用println()方法和print()方法输出对象数据时,对象的toString()方法被自动调用 D.PrintStream类提供了一系列用于打印数据的print()和println()方法 答案:B解析:PrintStream类位于IO包中,是字节输出流的子类

33在PipedInputStream类中,可以使管道输入流连接到管道输出流的方法是( ) A.connect () B.receive () C.read() D.available()

答案:A解析:receive ()方法用于接收数据字节,read()方法用于读取管道输入流中的下一个数据字节,available()方法可以获取不受阻塞地从此输入流中读取的字节数。 34下列选项中,关于管道流的说法错误的是( )

A.PipedOutputStream用于向管道中写入数据B.PipedInputStream用于从管道中读取数据 C.使用管道流时必须先建立连接D.PipedInputStream、PipedOutputStream属于字符流 答案:D解析:在字符流中也有一对PipedReader和PipedWriter用于管道的通信,它们的用法和PipedInputStream、PipedOutputStream相似

35下列有关HashSet集合的描述中,错误的是( )

A.HashSet是Set接口的一个实现类B.向HashSet存入对象时,对象一般会重写hashCode ()和equals ()方法C.向HashSet存入对象时,对象的equals ()方法一定会被执行D.HashSet存储的元素是不可重复的

答案:C解析:当调用HashSet集合的add()方法存入元素时,首先调用当前存入对象的hashCode()方法获得对象的哈希值,然后根据对象的哈希值计算出一个存储位置。如果该位置上没有元素,则直接将元素存入,如果该位置上有元素存在,才会调用equals()方法 36下列方法中可以用于往HashSet集合中添加元素的是( ) A.add(E e) B.contains(Object o) C.clear() D.iterator()

答案:A解析:用于往集合中添加元素的方法是add(E e)。contains(Object o)方法用于判断set集合中是否包含指定的元素, clear()方法移除此set集合中的所有元素,iterator()方法用于获取在此 set 中的元素上进行迭代的迭代器

37下列选项中,不属于FileWriter直接或间接父类的是( )

A.Object B.Writer C.OutputStreamWriter D. OutputStream 答案:D 38下列选项中,哪个类用于读取文本文件中的字符( )。

A.FileReader B.FileWriter C.BufferReader D.BufferWriter 答案:A

39下列选项中,哪个是FileWriter类中read()方法读取到流末尾的返回值?( ) A.0 B.-1 C.1 D.无返回值 答案:B

40使用FileReader读取reader.txt文本文件中的数据,reader.txt中的内容为:abc import java.io.*;

public class Example01 {

public static void main(String[] args) throws Exception { FileReader reader = new FileReader(\ int ch;

while ((ch = reader.read()) != -1) {

System.out.print(ch+\ }

reader.close(); }

}运行以上程序的结果是( )

A.编译出错 B.a b c C.97 98 99 D.无输出 答案:C 41阅读下列代码 import java.io.*;

public class Example{

public static void main(String[] args) throws Exception { // 创建一个带缓冲区的输入流

BufferedInputStream bis = new BufferedInputStream(new ________( \

// 创建一个带缓冲区的输出流

BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(\ int len;

while ((len = bis.read()) != -1) { bos.write(len); }

bis.close(); bos.close(); }

}下列选项中,可以填写在程序空白处的是()

A.FileInputStream B.File C.InputStream D.以上答案都不正确 答案:A 42请将下列四个步骤进行排列,完成文件的拷贝操作( )

① 将字节流输入流和源文件相关联,输出流和目标文件相关联。 ② 明确源文件和目标文件。

③ 使用输入流的读取方法读取文件,并将字节写入到目标文件中。 ④ 关闭资源。

A.①②③④ B.②①③④ C.②③①④ D.①③②④ 答案:B 43阅读下段代码 import java.io.*;

public class Example{

public static void main(String[] args) throws Exception { FileInputStream fis = new FileInputStream(\

FileOutputStream fos = new FileOutputStream(\ int ch = 0;

while((ch =fis.read())!=-1){ fos.write(ch); }

fos._______; fis.close(); }

}下列选项中,哪个填写在程序的空白处,程序不会报错。 A.read() B.available() C.close() D.write() 答案:C 44下面关于List集合的描述中,哪一个是错误的?( ) A.List集合是有索引的 B.List集合可以存储重复的元素 C.List集合存和取的顺序一致 D.List集合没有索引

答案:D解析:List集合中所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素

45下列关于List接口的描述中,错误的是?()

A.List接口继承自Collection接口,是单列集合B.List集合中允许出现重复的元素 C.List集合存储元素是有序的,即元素的存入顺序和取出顺序一致 D.List集合中所有的元素是以二叉树方式进行存储的

答案:D解析:List集合中所有的元素是以线性方式进行存储的

46在DateFormat类中定义了四个常量值用于作为参数传递给这些方法,其中FULL常量表示?( )

A.完整格式 B.长格式 C.普通格式 D.短格式 答案:A

47Calendar类中,用于为指定的日历字段增加或减去指定的时间量的方法是?( ) A.int get(int field) B.void add(int field,int amount)

C.void set(int field,int value) D.void set(int year,int month,int date) 答案:B 48下列关于java.util.Date类的描述中,错误的是?()

A.无参的构造方法Date(),用来创建当前日期时间的Date对象 B.在JDK的java.util包中提供了一个Date类用于表示日期和时间 C.推荐使用Date(int year,int month,int date)构造方法来创建Date对象

D.接收一个long型参数date的构造方法Date(long date),用于创建指定时间的Date对象 答案:C解析:Date(int year,int month,int date)构造方法已经过时,Date类中只有两个构造方法是建议使用的,一个是无参的构造方法Date(),用来创建当前日期时间的Date对象。另一个是接收一个long型参数date的构造方法Date(long date),用于创建指定时间的Date对象。

49下列方法中,用于返回当前日期的方法是?( )

A.Date() B. Date(int year, int month, int date) C.Date(String s) D.Date(long date) 答案:A 50下列是Math类中的一些常用方法,其中用于获取大于等于0.0且小于1.0的随机数的方法是?(

A.random() B.abs() C.sin() D.pow() 答案:A

51下列关于Math.random()方法的描述中,正确的是?( ) A.返回一个不确定的整数 B.返回0或是1

C.返回一个随机的double类型数,该数大于等于0.0小于1.0

D.返回一个随机的int类型数,该数大于等于0.0小于1.0 答案:C 52下列方法中,用于判断字符串是否相等的是()

A.boolean contains(CharSequence cs) B.String toLowerCase()

C.boolean equals(Object anObject) D.boolean isEmpty() 答案:C

53下列方法中,哪个用于实现获取字符在某个字符串中第一次出现的索引?() A.char charAt(int index) B.int indexOf(int ch) C.int lastIndexOf(int ch) D.boolean endsWith(String suffix) 答案:B

54已知 String 对象 s=\,则 s.substring(2, 5)的返回值为?( ) A.\ B. \ C.\ D.\ 答案:B

55假如indexOf()方法未能找到所指定的子字符串,那么其返回值为?( ) A.false B.0 C.-1 D.以上答案都不对 答案:C 56java.net包中提供了一个【】类用于表示TCP客户端 答案:Socket 析:java.net.Socket类表示TCP客户端

57使用UDP协议开发网络程序时,需要使用两个类,分别是【】和【】 答案:DatagramPacket,DatagramSocket 58在Java中,【】类用于操作磁盘中文件和目录,位于【】包中 答案:File,java.io 59Java中一个字符占用两个字节,所有字符采用的都是【】码表 答案:Unicode

60System.out是【】类的对象,称为标准输出流,调用System类的【】方法可以实现标准输出流的重定向。 答案:PrintStream,setOut(PrintStream out) 61在Java中,能实现线程间通信的流是【】。 答案:管道流

62InputStreamReader类是用于将【】转换为【】 答案:字节流,字符流 63BufferedWriter的【】方法可以写入一个换行符 答案:newLine()

64在程序中若想取得一个Runtime实例,则可以调用Runtime类的静态方法【】。 答案:getRuntime()

65Math类中用于计算所传递参数平方根的方法是【】 答案:sqrt()

66Math类中有两个静态常量PI和E,分别代表数学常量【】和【】答案:π, e

67已知 sb 为 StringBuffer 的一个实例,且 sb.toString() 的值为 \\, 则执行sb. reverse()后,sb.toString()的值为【】。答案:edcba 68在TCP/IP协议中,【】可以用来唯一标识一台计算机答案:IP地址

解析:要想使网络中的计算机能够进行通信,必须为每台计算机指定一个标识号,通过这个标识号来指定接受数据的计算机或者发送数据的计算机。在TCP/IP协议中,这个标识号就是IP地址,它可以唯一标识一台计算机。

69LineNumberReader 可以在读文件的同时记录行号,它是【】的直接子类。答案:BufferedReader

70线程的优先级用1~10之间的整数来表示,其中【】代表优先级最高,【】代表优先级最低。 答案:10,1

71yield()方法只能让相同优先级或者更高优先级、处于【】状态的线程获得运行的机会。 答案:就绪

72要将某个线程设置为后台线程,需要调用该线程的【】方法,该方法必须在【】方法之前调用。 答案:setDaemon(true),start() 73 线程的整个生命周期分为五个阶段,分别是【】、【】、【】、【】和【】。答案:新建状态(New),就绪状态(Runnable),运行状态(Running),阻塞状态(Blocked),死亡状态(Terminated) 74当新线程启动后,系统会自动调用【】方法。答案:run()

75在使用JComboBox时,方法【】可以设置组合框的选项是否可编辑 答案:void setEditable(boolean aFlag) 76JTextField有一个子类【】,它表示一个密码框 答案:JPasswordText

77JTextField和JTextArea这两个文本组件都继承了【】类 答案:JTextComponent

78如果想往JScrollPane面板中添加多个组件,应该先将组件添加到【】中,然后将其添加到JScrollPane中 答案:JPanel

79FlowLayout的构造方法FlowLayout(int align)中,参数align决定组件在每行中相对于【】的对齐方式 答案:容器边界

80向BorderLayout的布局管理器添加组件时,如果不指定添加到哪个区域,则默认添加到【】区域 答案:CENTER

81GridLayout的构造方法GridLayout(int rows,int cols,int hgap,int vgap)中,参数rows代表【】,cols代表【】,hgap和vgap规定【】和【】方向的间隙答案:行数,列数,水平,垂直 82在CardLayout布局管理中,方法【】用于显示parent容器的最后一张卡片 答案:void last(Container parent)

83在KeyEvent类中有一个静态方法【】,它可以将按键内容以String形式返回 答案:getKeyText(int keyCode)

84处理鼠标事件时首先需要通过实现MouseListener接口定义监听器,也可以通过继承适配器【】类来实现 答案:MouseAdapter

85【】负责事件源上发生的事件,并对各种事件作出响应处理 答案:监听器 86JDK中提供了一个用于表示这些窗体事件的类是【】 答案:WindowEvent 解析:JDK中提供了一个类WindowEvent用于表示这些窗体事件 87管道流分为【】和管道输出流 答案:管道输入流

解析:管道流分为管道输入流(PipedInputStream)和管道输出流(PipedOutputStream),它是一种比较特殊的流,必须先建立连接才能进行彼此间通信。

88ByteArrayOutputStream类会在创建对象时就创建一个【】型数组的缓冲区 答案:byte 解析:ByteArrayOutputStream类会在创建对象时就创建一个byte型数组的缓冲区,当向数组中写数据时,该对象会把所有的数据先写入缓冲区,最后一次性写入文件。 89Java的IO包中可以跟踪行号的输入流是【】。答案:LineNumberReader

90向文件中写入字符需要使用【】类,它是Writer的一个子类 答案:FileWriter 91字节流缓冲区实际上是一个【】数组 答案:字节

92java.io包中可以用于从文件中直接读取字符的是________类 答案:FileReader 93IO流有很多种,按照操作数据的不同,可以分为【】和字符流。 答案:字节流

94【】类用于完成日期和时间字段的操作,它可以通过特定的方法设置和读取日期的特定部分,比如年、月、日、时、分和秒等。答案:Calendar

95System类的【】静态方法可以启动垃圾回收器。 答案:gc()

96针对字符串的操作,Java提供了两个字符串类,分别是String和【】答案:StringBuffer 97Math类中,用于获取绝对值的方法是【】 答案:abs() 98SimpleDateFormat类,存放在【】包中 答案:java.text 解析:SimpleDateFormat在java.text包中 99请简述什么是线程。

答案:线程是一个程序的执行流,执行调度的单位,依托于进程存在。线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间也叫做线程栈,是在建立线程时由系统分配的,主要用来保存线程内部所使用的数据,如线程执行函数中所定义的变量。 105Socket类和ServerSocket类各有什么作用?

答案:ServerSocket类用于创建服务端程序,通过调用ServerSocket对象的accept()方法,接收来自客户端的请求。

Socket类用于创建客户端程序,当客户端和服务端的两个Socket建立了专线连接后,连接的一端既能向另一端连续写入字节,也能从另一端读取字节。Socket类中定义了getInputStream()方法返回Socket的输入流对象,定义了getOutputStream()方法返回Socket的输出流对象。只要连接的一端向该输出流对象写入了数据,连接的另一端就能从其输入流对象中读取到。

110String和StringBuffer有什么区别?

答案:String类是不可变类,即字符串值一旦初始化后就不可能改变。StringBuffer是可变字符串类,类似String的缓冲区,可以修改字符串的值。

111请简要描述什么是网络通信协议

答案:在计算机网络中,连接和通信的规则被称为网络通信协议。网络通信协议有很多种,目前应用最广泛的是TCP/IP协议(Transmission Control Protocal/Internet Protoal传输控制协议/英特网互联协议)、UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其它一些协议的协议组。

解析:在计算机网络中,连接和通信的规则被称为网络通信协议。网络通信协议有很多种,目前应用最广泛的是TCP/IP协议(Transmission Control Protocal/Internet Protoal传输控制协议/英特网互联协议)、UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其它一些协议的协议组。

113阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。如果不能编译通过,请说明原因。 public class B {

public static void main(String[] args) {

String s = \ System.out.println(\ System.out.println(\

System.out.println(\ System.out.println(\ System.out.println(\ }

答案:程序编译能通过,输出结果如下 str.length():15 str.charAt(0):d lastIndexOf(m):10 substring(2,4):fe indexOf(g):5

114简述流的概念

答案:Java程序通过流来完成输入和输出,流是输入或输出信息的抽象。流通过Java的输入/输出系统与外设连接进行数据通信。流是抽象的对象,具体实现代码在java.io包中。 115IO流被分为字节流、字符流两大流类,两者有什么区别?

答案:字节流的两个基类是InputStream和OutputStream,字符流的两个基类是Reader和Writer,它们都是Object类的直接子类,字节流是处理以8位字节为基本单位的字节流类;Reader和Writer类是专门处理16位字节的字符流类。 117什么是集合,请列举集合中常用的类和接口?

答案:为了使程序能方便的存储和操作数目不固定的一组数据,JDK提供了一套类库,这些类都位于java.util包中,统称为集合。集合框架中包含3个接口,分别是List、Set、Map。 118集合中的List、Set、Map有什么区别? 答案:List的特点是元素有序、元素可重复。List接口的主要实现类有ArrayList和LinkedList。Set的特点是元素无序、元素不可重复。Set接口的主要实现类有HashSet和TreeSet。Map的特点是存储的元素是键(Key)、值(Value)映射关系,元素都是成对出现的。Map接口的主要实现类有HashMap和TreeMap。

119Java中有几种方法可以实现一个线程?请举例说明。

答案:一种是继承java.lang包下的Thread类,覆写Thread类的run()方法,在run()方法中实现运行在线程上的代码。

new Thread() {

public void run(){} }.start();

另一种就是实现java.lang.Runnable接口,同样是在run()方法中实现运行在线程上的代码。 new Thread(new Runnable(){ public void run(){} }).start()

121简述如何实现GUI中的事件监听机制

答案:通过实现XxxListener接口或者继承XxxAdapter类实现一个事件监听器类,并对处理监听动作的方法进行重写

创建事件源对象和事件监听器对象

调用事件源的addXxxLisntener()方法,为事件源注册事件监听器对象 122请简述适配器类的作用

答案:JDK提供了一些适配器类,它们是监听器接口的默认实现类,这些实现类中实现了接口的所有方法,但方法中没有任何代码。程序可以通过继承适配器类来达到实现监听器接口的目的。

123简述什么是标准输入输出流

答案:在System类中定义了三个常量:in、out和err,它们被习惯性地称为标准输入输出流。其中,in为InputStream类型,它是标准输入流,默认情况下用于读取键盘输入的数据,out为PrintStream类型,它是标准输出流,默认将数据输出到命令行窗口,err也是PrintStream类型,它是标准错误流,它和out一样也是将数据输出到控制台。不同的是,err通常输出的是应用程序运行时的错误信息

124请简要概述管道流的概念和作用

答案:管道流分为管道输入流(PipedInputStream)和管道输出流(PipedOutputStream),通常由一个PipedInputStream实例对象和一个PipedOutputStream实例对象相互连接而实现管道通信,PipedOutputStream向管道写入数据,PipedInputStream从管道中读取PipedOutputStream写入的数据,管道流主要用来完成线程之间的通信。

解析:管道流分为管道输入流(PipedInputStream)和管道输出流(PipedOutputStream),通常由一个PipedInputStream实例对象和一个PipedOutputStream实例对象相互连接而实现管道通信,PipedOutputStream向管道写入数据,PipedInputStream从管道中读取PipedOutputStream写入的数据,管道流主要用来完成线程之间的通信。 129请简要概述,如何使用SimpleDateFormat类格式化当前日期

答案:创建SimpleDateFormat类对象,在构造方法中传递日期和时间的模板格式,调用SimpleDateFormat的format()方法,将new Date()对象格式化为当前模板格式的日期

解析:创建SimpleDateFormat类对象,在构造方法中传递日期和时间的模板格式,调用SimpleDateFormat的format()方法,将new Date()对象格式化为当前模板格式的日期 132请简述StringBuffer类中append方法的作用和特点。 答案:append()方法始终将数据添加到缓冲区的末尾,并返回原来的StringBuffer,无论append追加的数据是什么类型,最终都会变成字符串 133简述Java中对String进行初始化的方式?

答案:在操作String类之前,首先需要对String类进行初始化,在Java中可以通过以下两种方式对String类进行初始化:

1、使用字符串常量直接初始化一个String对象。 2、使用String的构造方法初始化字符串对象。