admin 管理员组

文章数量: 887031


2023年12月21日发(作者:weigh的三单形式)

Java 期末考试题库

选择题

(ABCD)1、以下选项中,哪些属于 JDK工具?(多选)

A、 Java 编译器 B 、 Java 运行工具 C、 Java 文档生成工具 D、

Java 打包工具

(C)2 、 Java 属于以下哪种语言?

A、机器语言B、汇编语言C、高级语言D、以上都不对

(AD)1 、以下选项中,哪些属于合法的标识符?(多选) AD

A、 Hello_World B 、 class C 、 123username D 、 username123

(AD)2 、关于方法重载的描述,以下选项中哪些是正确的? (多

选)( AD) ABD

A、方法名必须一致 B、返回值类型必须不同

C、参数个数必须一致 D、参数的个数或类型不一致

(C)3 、以下关于变量的说法错误的是? C

A、 变量名必须是一个有效的标识符

B、 变量在定义时可以没有初始值

C、 变量一旦被定义,在程序中的任何位置都可以被访问

D在程序中,可以将一个byte类型的值赋给一个int类型的变 量,不需要特殊声明

(ABCD)4、以下选项中,switch语句判断条件可以接收的数据类

型有哪些? (多选) ABCD

A、 int B 、 byte C 、 char D 、 short

(AC)7、下列语句哪些属于循环语句?(多选) AC

A、 for 语句 B、 if 语句 C、 while 语句 D、 switch 语句

(A) 8 、下面哪种写法可以实现访问数组 arr 的第 1 个元素 ?A

A、 arr[0] B 、 arr(0) C 、 arr[1] D 、 arr(1)

(B) 9 、以下哪个选项可以正确创建一个长度为 3 的二维数组?

(B) C

A、 new int [2][3]; B 、 new int[3][];

C、 new int[][3]; D 、 以上答案皆不对

(A) 10 、请先阅读下面的代码。

int x = 1;

int y = 2; if (x % 2 == 0) {

y++;

}else {

y-- ;

}

n("y=" + y);

上面一段程序运行结束时,变量 y 的值为下列哪一项?

A、 1 B、 2 C、 3 D、 switch 语句

(B) 1 、在类的继承关系中,需要遵循以下哪个继承原则?

A、多重B、单一 C、双重D、不能继承

(C) 2 、在 Java 语言中,以下哪个关键字用于在方法上声明抛出 异常?

A. try

(ABC)3、关于super关键字以下说法哪些是正确的?(多选)

A、 super 关键字可以调用父类的构造方法

B、 super 关键字可以调用父类的普通方法

C、 super 与 this 不能同时存在于同一个构造方法中

D、 super 与 this 可以同时存在于同一个构造方法中

(ABCD) 4、以下说法哪些是正确的?(多选)

A、 Java 语言中允许一个类实现多个接口

B、 Java 语言中不允许一个类继承多个类

C、 Java 语言中允许一个类同时继承一个类并实现一个接口

D、 Java 语言中允许一个接口继承一个接口

(C) 5 、类中的一个成员方法被下面哪个修饰符修饰, 该方法只能本类被访问?

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

(AC)6、关于抽象类的说法哪些是正确的?(多选)

A、 抽象类中可以有非抽象方法。

B、 如果父类是抽象类,则子类必须重写父类所有的抽象方法。

C、 不能用抽象类去创建对象。

D接口和抽象类是同一个概念。

(C) 7 、在 Java 中,要想让一个类继承另一个类,可以使用以下 哪个关键字?

A、inherits B 、implements C 、extends D 、 modifies

(D)8 、System 类位于以下哪个包中?

A、 B 、 C 、 D 、

(B) 1 、Thread 类位于下列哪个包中?

A、 B 、 C 、 D 、

(AC)2、关于线程的创建过程,下面四种说法正确的有哪些?(多

选)

A、 定义Thread类的子类,重写

Thread 类的 run() 方法,创建

该子类的实例对象,调用对象的

start() 方法

B、 定义Thread类的子类,重写

Thread 类的 run() 方法,创建

该子类的实例对象,调用对象的

run() 方法

C、定义一个实现Runnable接口的类并实现run()方法,创建该 类实例对象,将其作为参数传递给 Thread 类的构造方法来创建

Thread 对象,调用 Thread 对象的 start() 方法

D定义一个实现Runnable接口的类并实现run()方法,创建该

类对象,然后调用 run() 方法

(ABC)3、对于通过实现 Runnable接口创建线程,下面说法正确 的有哪些? ( 多选 )

A、适合多个相同程序代码的线程去处理同一个资源的情况

B、 把线程同程序代码、数据有效的分离,很好的体现了面向对 象的设计思想

C、 可以避免由于Java的单继承带来的局限性

D编写简单,可以不通过 Thread类直接创建线程

(BC)4、对于线程的生命周期,下面四种说法正确的有哪些?(多 选)

A、 调用了线程的start()方法,该线程就进入运行状态

(就绪, 还要获得CPU使用权)

B、 线程的run()方法运行结束或被未catch的 InterruptedException

等异常终结,那么该线程进入死亡状态

C、 线程进入死亡状态,但是该线程对象仍然是一个 Thread对象,

在没有被垃圾回收器回收之前仍可以像引用其它对象一样引用

D线程进入死亡状态后,调用它的

启动

(ABD)5、对于死锁的描述,下面四种说法正确有哪些?

start()方法仍然可以重新

(多选)

A、 当两个线程互相等待对方释放同步锁时会发生死锁

B、 Java 虚拟机没有检测和处理死锁的措施

C、 一旦出现死锁,程序会发生异常

D处于死锁状态的线程处于阻塞状态,无法继续运行

(ABC)6、下面四个选项中,哪些是线程进入阻塞状态的原因?(多 选)

A、 线程试图获取某个对象的同步锁,而该锁被其它线程持有

B、 线程调用了另一个线程的joi n()方法

C、 当线程调用了一个阻塞式的10方法

D 线程调用了 setDaemon(boolean b)方法

(C) 7 、线程调用 sleep() 方法后,该线程将进入以下哪种状态?

A、就绪状态 B 、运行状态

C、阻塞状态 D 、死亡状态

(D) 8 、在以下哪种情况下,线程进入就绪状态?

A、线程调用了 sleep()方法时B、线程调用了 join()方法(终止)

C、线程调用了 yield()方法时D、线程调用了 notify()方法??

(AB)9 、下面四个选项中, 对线程同步的目的描述正确的有哪些?

( 多选 )

A、 锁定资源,使同一时刻只有一个线程去访问它,防止多个线 程操作同一个资源引发错误

B、 提高线程的执行效率

C、 让线程独占一个资源

D让多个线程同时使用一个资源

(ABCD)10对于wait()方法,下面说法正确的是?(多选)

A、 wait() 方法的调用者是同步锁对象

B、 wait() 方法使线程进入等待状态

C、 调用同一锁对象的notify() 或notifyAll()

wait() 方法等待的线程

方法可以唤醒调 用

D调用wait()方法的线程会释放同步锁对象

(C)1 、先阅读下面的程序片段: String str = "abccdefcdh";

String[] arr = ("c");

n(); 程序执行后,打印的结果是几?

A 2个B、3个C、4个D、5个

(C) 2 、以下都是 Math 类的常用方法,其中用于计算绝对值的方 法是哪个?

A、 ceil() B 、 floor() C 、 abs() D 、 random()

(D) 3、Random对象能够生成以下哪种类型的随机数?

A、 int B 、 string C 、 double D 、 A 和 C

(C)4 、 String s = "abcdedcba"; 则 ing(3 ,4) 返回的 字符串是以下选项中的哪个?

A、 cd B 、 de C、 d D、 e

(C)5 、假若 indexOf() 方法未能找到所指定的子字符串,则返回 以下选项中的哪个?

A、 false B 、 0 C 、 -1 D 、以上答案都不对

(B) 6 、要产生 [20 ,999] 之间的随机整数可以使用以下哪个表达

式?

A.(int)(20+()*97)

B. 20+(int)(()*980)

C. (int)()*999

D. 20+(int)()*980

(C) 7、以下Math类的方法中,-4.4通过哪个方法运算后,结果 为-5.0 ?

A. round() 四舍五入 B. min() C. floor()

D. ceil() 大于参数最小整数

(A) 8 、下面的程序段执行后,输出的结果是以下哪个选项?

StringBuffer buf=new StringBuffer("Beijing2008"); (7,"@");

n(ng());

A、 Beijing@2008 B 、 @Beijing2008 C 、 Beijing2008@ D 、

Beijing#2008

(A) 9 、阅读下面的程序:

public class test {

public static void main(String args[]) {

int i;

float f = 2.3f;

double d = 2.7;

i = ((int)(f)) * ((int)(d));

n(i);

}

小于参数最大整数

}

程序执行后,运行结果为以下哪个选项?

A、 9 B 、 5 C 、 6 D 、 6.1

(B) 10 、先阅读下面的程序片段:

String str1=new String("java");

String str2=new String("java");

StringBuffer str3=new StringBuffer("java"); 对于上述定义的变量,以下表达式的值为 true 的是哪个? A、 str1==str2; B 、(str2);

C

以上都不对

(BC 1、要想保存具有映射关系的数据,可以使用以下哪些集 合?(多选)

A、 ArrayList B 、 TreeMap C 、 HashMap D 、 TreeSet

(A)2、 Java 语言中,集合类都位于哪个包中?

A、 B 、 C 、 D 、 tions

(D) 3、使用Iterator 时,判断是否存在下一个元素可以使用

以下哪个方法?

A、 next() B 、 hash() C 、 hasPrevious() D 、 hasNext()

(ABD 4、关于foreach循环的特点,以下说法哪些是正确的?

(多选)

A、 foreach 循环在遍历集合时,无需获得容器的长度

B、 foreach 循环在遍历集合时,无需循环条件,也无需迭代语 句

、 str1==str3; D

C、 foreach 循环在遍历集合时非常繁琐

D、foreach 循环的语法格式为: for( 容器中元素类型 临时变量 : 容器变量 ) 。

(C) 5、在程序开发中,经常会使用以下哪个类来存储程序中所 需的配置?

A、 HashMap B、 TreeSet C 、 Properties D 、 TreeMap

( AB) 6、使用 Enumeration 遍历集合时,需要使用以下哪些方

法? (多选 )

A、 hasMoreElements() B 、 nextElement() C 、 next() D 、

hashNext()

(D) 7、要想集合中保存的元素没有重复并且按照一定的顺序排 列,可以使用以下哪个集合?

A、 LinkedList B 、 ArrayList C 、 hashSet D 、 TreeSet

( AB) 8、下列哪些说法是正确的?(多选)

A、 LinkedList 集合在增删元素时效率较高

B、 ArrayList 集合在查询元素时效率较高

C、 HashMap不允许出现一对null键null值

D、 HashSet 集合中元素可重复并且无序

ABC) 9、以下哪些方法是 LinkedList 集合中定义的?(多选)

A、getLast() B

next()

、getFirst() C 、remove (int index) D 、

(B) 10、获取单列集合中元素的个数可以使用以下哪个方法?

A、 length() B 、 size() C 、 get(int index) D 、 add(Object obj)

(AB)1 、下面选项中,哪些是标准输入输出流?(多选)

A、 System. In B、 System. Out C、 InputStream D、

OutputStream

(C) 2 、以下选项中,哪个是的父类?

A. Stream tream

(C)3 、 File 类中以字符串形式返回文件绝对路径的的方法是?

A、 getParent() B 、 getName()

C、 getAbsolutePath() D 、 getPath()

(ABCD)4、下面哪些是常用的字符码表?(多选)

A、 ASCII B 、 UTF-8 C、 ISO8859-1 D 、 GB2312

(AB)5、以下创建RandomAccessFile类实例对象的代码, 哪些是

正确的? (多选)

A、 RandomAccess

File( “D:

B、

RandomAccessFile( “D:

)

”), ”rw”)

”, ”r”

C、 RandomAccessFile( “D: itcastdir1t

D

RandomAccessFile( “ D:

”)

” , ” wr

(ACD)6、以下哪些属于InputStream 类的方法?(多选)

A int read(byte[]) B 、void flush() C 、void close() D 、 available()

(A) 7、以下选项中,哪个流中使用了缓冲区技术?

A、BuffereOutputStream B 、 C、DataOutputStream D、

(A)8、以下选项中,哪个是()方法返回值的类型?

A boolean B、int C、String D 、Integer

(D) 9、以下选项中,哪个文件操作类可以实现一次读入多个文

件?

A B、BufferedReader C、 D、SequencelnputStream

(A)10、以下对 File 类的 public boolea isFile()

哪个是正确的?

A、 判断该File对象所对应的是否是文件。

B、 判断该File对象所对应的是否是目录。

C、 返回文件的最后修改时间。

D在当前目录下生成指定的目录。

(D) 1、下面四个组件中哪一个不是 Comp onent的子类?

A Button B、Dialog C、Label D、MenuBar

方法的描述,

(D) 2、每一个GUI程序中必须包含一个什么组件?

A、按钮B、标签C、菜单D、容器

(ABD 3、下面四个选项中,哪些是事件处理机制中的角色?(多 选)

A、事件 B 、事件源

C、事件接口 D 、事件监听器

(A)4、当鼠标按键被释放时,会调用以下哪个事件处理器方法?A、 mouseReleased() B 、 mouseUp()

C、 mouseOff() D 、 mouseLetGo()

( D)5、 ActionEvent 的对象会被传递给以下哪个事件处理器方

A、 addChangeListener() B 、 addActionListener()

C、 stateChanged() D 、 actionPerformed()

(ABCD 6、AWT中,常用的布局管理器包括哪些?

(多选)

A、 FlowLayout 布局管理器 B 、 BorderLayout 布局管理器

C、 CardLayout 布局管理器 D 、 GridLayout 布局管理器

(ABD 7、下面哪些是FlowLayout类中表示对齐方式的常量?

(多选)

A、 B 、

C、 AL D 、

(ABC 8、下面对与Swing的描述,正确的有哪些?(多选)

A Swing是在AW1基础上构建的一套新的图形界面系统

B、 Swing提供了 AWT所能够提供的所有功能

C、 Swing 组件是用 Java 代码来实现的

法?

D、 Swing 组件都是重量级组件

(D) 9、下面四对 AW1和Swing对应组件中,错误的是?

A、 Button 和 JButton

B、 Dialog 和 JDialog

C、 MenuBar和 JMenuBar

D ComboBoX和 JComboBox

( C) 10、使用下面哪个组件可以接收用户的输入信息?

A、 JButton B 、 JLabel

C、 JTextField D 、以上都可以

(C) 1.使用UDP协议通信时,需要使用哪个类把要发送的数据 打包?(d)的街 A, Socket 辣 C m05 3136t0 www B.

DatagramSocket

C. DatagramPacket D. ServerSocket

( A) 2. 以下哪个是 serverSocket 类用于接收来自客户端请求 的方法? ( )

A. accept() B. getOutputStream()"C. receive( ) D.

get()

(ABD) 3. 以下说法哪些是正确的

? (多选)()

A. TCP连接中必须要明确客户端与服务器端

B. TCP协议是面向连接的通信协议,它提供了两台计算机之间可 靠无

差错的数

据传输

C. UDP协议是面向无连接的协议,可以保证数据的完整性

D. UDP协、议消耗资源小,通信效率高,通常被用于音频、视频和

普通数据的传输

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

A. ServerSocket B. Socket

C. Client D. Server

(C)

UDP通信时,在接收端若要获得发送端的

可以使用 DatagramPacket 的哪个方法

? (

A. getAddress() B. getPort()

C. getName() D. getData()

( A) 6. 以下哪个方法是 DatagramSocket 类用于发送数据

的方法

?()

A. receive( ) B. accept()

C. set() D. send()

5.进行IP地址,

( B) 7. 在程序运行时, DatagramSocket 的那个方法会发生阻塞

()

A. send() B. receive()

C. close() D. connect()

(C)8. TCP协议的“三次握手”中,第一-次握手指的是什么?() A. 客户端再次向服务器端发送确认信息,确认连接

B. 服务器端向客户端回送一.个响应,通知客户端收到了连接请

C. 客户端向服务器端发出连接请求,等待服务器确认

D. 以上答案全部错误

( B) 1、类的定义必须包含在以下哪种符号之间?

A、方括号[]B、花括号{} C、双引号“” D、圆括号()

(D) 2、下面哪一个是正确的类的声明?

A public void HH {…} B、public class Move() {…}

、public class Car {… C、public class void nu mber{} D

( B) 3、在以下什么情况下,构造方法会被调用?

A、 类定义时 B、 创建对象时 C、 调用对象方法时 D、 使用 对象的变量时

(ABC) 4、下面对于构造方法的描述,正确有哪些? (多选)

A、 方法名必须和类名相同

B、 方法名的前面没有返回值类型的声明

C、 在方法中不能使用return语句返回一个值

D当定义了带参数的构造方法,系统默认的不带参数的构造方 法依然存在

( ABCD) 5、使用 this 调用类的构造方法, 下面的说法正确的是?

( 多选 )

A、 使用this调用构造方法的格式为this([参数1,参数2…])

B、 只能在构造方法中使用this调用其它的构造方法

C、使用this调用其它构造方法的语句必须放在第一行

D不能在一个类的两个构造方法中使用 this互相调用

(ACD 6、下面哪些可以使用 static 关键字修饰?(多选)

A 成员变量B、局部变量C、成员方法D、成员内部类

填空题

(class )1、 Java 中的程序代码都必须在一个类中定义,类使 用 ________ 关键字来定义。

( true 和 false )2、布尔常量即布尔类型的两个值,分别是

(基本数据类型、引用数据类型)

4、 Java 中的变量可分为两种数据类型,分别是 _基本数据类型

____

和_引用数据类型 _____ 。( 34)9、若 int

[]a={12,45,34,46,23}; ,则 a[2]= _________ 。

( 56) 10 、若 int a[3][2]={{123,345},{34,56},{34,56}} ,__

则 a[2][1]= ____ 。

(继承) 1、在 Java 语言中,允许使用已存在的类作为基础创建

新的类,这种技术我们称为继承 ________ 。

( 方法,抽象类 )2 、一个类如果实现一个接口,那么它就需要实

现接口中定义的全部 _方法 ___ ,否则该类就必须定义成 _抽象

类 ____ 。

(import)3 、在程序开发中,要想将一个包中的类导入到当前程

序中,可以使用 ______ 关键字。

( 子类、父类、基类 )4 、一个类可以从其它的类派生出来,派生

出来的类称为 ______ ,用于派生的类称为 _______ 或者__ ___ 。

(Exception) 5、JDK 中定义了大量的异常类, 这些类都是 _ _____

类的子类或者间接子类。

(final)6 、定义一个 Java 类时,如果前面加使用 _________ 关键字

修饰,那么该类不可以被继承。

(try 、catch)9 、异常的捕获通常由 try 、catch 两部分组成,

____ 代码块用来存放可能发生异常, _catch ____ 代码块用来处

理产生的异常。

(填空题线程、通信) 1、一个应用程序中有多条并发执行的线

索,每条线索都被称作一个线程 ________ ,它们会交替执行,彼此

间可以进行 _通信 ___ 。

(Thread 、Runnable ) 2、在实现多线程的程序时有两种方式,

一是通过继 _Thread ____ 承类,二是通过实现 Runnable ______

接口。

(就绪) 3、yield() 方法只能让相同优先级或者更高优先级、处

于_就绪 ____ 状态的线程获得运行的机会。

( synchronized 、对象、 this )4、在 Java 语言中,同步方法需 要用到关键字 _synchronized_ ,对于同步方法而言无需指定同步 锁,它的同步锁是方法所在的 _对象 __________ ,也就是 _this ___ ( 关

键字)。

( 进程 )5 、在多任务系统中,每个独立执行的程序称之为 _ 线程 ,也就是“正在运行的程序”。

( 新建状态 (New) 、就绪状态 (Runnable) 、运行状态 (Running) 、

阻塞状态 (Blocked) 、死亡态 (Terminated))6 、线程的整个生命 周期分为五个阶段,分别是 _新建 _________ 、就绪 _____ 、_运行

____

、_阻塞 ____ 、和死亡 ____ 。

(10 、1)7 、线程的优先级用 1~10之间的整数来表示, 其中__10___

代表优先级最高, __1___代表优先级最低。

( 开启一个新线程、 run() 方法 )8 、在 Thread 类中,提供了一个

start() 方法,该方法用于启动线程 _________ ,当新线程启动后,

系统会自动调用 __run() ___ 方法。

(wait() 、notify() 、notifyAll())9 、要想解决线程间的通信问

题,可以使用 __wait() ____ 、 notify() _____ 、

_notifyALL() ____ 方法。

(setDaemon(true) 、start())10 、要将某个线程设置为后台线程, 需要调用该线程的 _setDaemon(true) ________ 方法,该方法必须在

_start() ____ 方法之前调用。

(String 、StringBuffer)1 、在 Java 中定义了两个类来封装对字 符串的操作,它们分别是 _和_ ___。

(Date 、Calendar 、DateFormat)2 、Java 中的操作日期的类有 __

(getRuntime())3 、在程序中若想取得一个 Runtime 实例,则可 以调用 Runtime 类的静态方法 _________ 。

(sqrt())4

____

(DateForma)5 、 Java 中专门用于将日期格式化为字符串的类是

(n、e)6、Math类中有两个静态常量 PI和E,分别代表数学常

量 和

___。

(Random、 )7 、 Java 中的用于产生随机数的类是 ___, 它位于 _____ 包中。

(length())8 、 String 类中用于返回字符串字符个数的方法是

(静态)9、System类中所提供的属性和方法都是 —静态_的,想 要引用这些属性和方法,直接使用 System 类调用即可。

(edcba)10 、已知 sb 为 StringBuffer 的一个实例,且 ng() 的值为 "abcde " , 则执行 sb. reverse() 后, ng() 的值为 。

、 Math 类中用于计算所传递参数平方根的方法是

(集合)1、JDK中提供了一系列可以存储任意对象的类,统称 为()

(有序、可重复,无序、不可重复) 3、 Collection 有两个子接 口分别是 List 和 Set ,List 集合的特点是 () ,Set 集合的特点 是()

( hashNext() 、next() )4、使用 Iterator 遍历集合时,首先需 要调用() 方法判断是否存在下一个元素,若存在下一个元素, 则调用()方法取出该元素。

(Collection 、Map 5、集合按照存储结构的不同可分为单列集 合和双列集合,单列集合的根接口是

的根接口是 。

,双列集合

(键、值)6、Map集合中的元素都是成对出现的,并且都是 以 、 的映射关系存在。

( ListIterator )7、 Iterator 有一个子类,不仅可以对集合进

行从前向后遍历,还可以从后向前遍历,该类是

(put()、get() )9、Map集合中存储元素需要调用

法,要想根据该集合的键获取对应的值需要调用

法。

(键、值) 10、 包中提供了一个专门用来操作集合的 工具类,这个类是

的工具类,这个类是

,还提供了一个专门用于操作数组

(题字节流、字符流)1、Java中的10流,按照传输数据不同, 可分为

_________

和 _____ 。

()2 、在 Java 中, _____ 类用于操作磁盘中文件和目录,位于

___ 包中。

(SequenceInputStream)3 、在 Java 中,___ 类用来把两个或更 多的

InputStream 输入流对象合并为单个 InputStream 输入流对 象使用。

(RandomAccessFile)4 、 Java 中提供了一个类 _____ ,它不但

具有读写文件的功能, 并且可以随机地从文件的任何位置开始执 行读写数据的操作。

( 管道流 )5 、在 Java 中,能实现线程间通信的流是 ____ 。

(LineNumberReader 、 BufferedReader 、 setLineNumber(int) 、

getLineNumber())6 、Java 中提供了一个可以在读文件的同时记 录行号的类,这个类是 ________ ,它是 __ 的直接子类,它通过 ____

和 ___ 方法设置和获取当前行号。

( 字节流、字符流 )7 、 InputStreamReader 类是用于将 ____ 转

换为 ____ 。

(PrintStream 、setOut(PrintStream out))8 、 是 ___ _类的对象, 称为标准输出流, 调用 System 类的 ________ 方法可

以实现标准输出流的重定向。

(Unicode)9 、 Java 中一个字符占用两个字节,所有字符采用的 都是

________ 码表。

(newLine())10 、BufferedWriter

的 _______ 方法可以写入一个换

行符。

GUI、 、 ) 1、 在 Java 中,图形用户界

面简称 _______ ,它的组件包含在 ______

和 _____ 这两个包中。

(适配器) 2、 为了避免实现监听器中定义的所有方法,造成代

码的臃肿,在JDK中提供了一些 ______ 类,这些类实现了接口所

有的方法,但是方法中没有任何代码,属于一种空实现。

(Graphics )3、 在 Java 中, ________ 类相当于一个抽象的画笔

对象,使用它可以在组件上绘制图形。

(事件监听器) 4、 ______ 负责监听事件源上发生的事件,并对

各种事件做出响应处理。

(面向连接、客户端、服务器端) 协议的特点是(),即在

传输数据前先在 () 和() 建立逻辑连接。

( 2、 0-65535 ) 2. 在计算机中,端口号是用 _____ 字 节,也就

是 16 位的二进制数表示,它的取值范围是 _______ 。

(链路层、网络层、运输层、应用层) 3. TCP/IP 协议被分为四

个层,分别是 _____

, ___

, ___

, ___ 。

(InetAddress )4.在JDK中,IP 地址用 ________ 类来表示,该类提

供了许多和 IP 地址相关的操作。

(DatagramPacket、DatagramSocket)5.使用 UDF协议开发网

络程序时 , 需要使用两个类 , 分别是 _____

和 ____ 。

封装、继承、多态) 1、 面向对象的三大特征是封装性 _、 _继承

性 ______

和 ______ 。

( new) 2、 在 Java 中,可以使用关键字 ___ 来创建类的实例

对象。

(成员变量、局部变量) 3、 定义在类中的变量被称为 ________

定义在方法中的变量被称为 _______

(静态变量) 7、 被 static 关键字修饰的成员变量被称为 _ _ 它可以被该类所有的实例对象共享。

( private )10、所谓类的封装是指在定义一个类时,将类中的 属性私有化,即使用 _ _________ 关键字来修饰。

判断题

( 错 )1 、 Java 语言不区分大小写。

( 对)2 、0xC5 表示的是一个十六进制整数。

( 错)3 、continue 语句只用于循环语句中, 它的作用是跳出循环。

(对)4、“ /*…*/ ”中可以嵌套“ // ”注释,但不能嵌套

“/*…*/ ”注释。

( 错)5 、 -5%3的运算结果是 2。 (错)1、抽象方法必须定义在抽象类中,所以抽象类中的方法都 是抽象方法。

(对)2、 Java 中被 final 关键字修饰的变量,不能被重新赋值。

( 错)3 、不存在继承关系的情况下,也可以实现方法重写。

(对)4、 package 声明语句应当为 Java 源文件中的第一条语句。

( 对 )5 、接口中只能定义常量和抽象方法。

( 错 )1 、当我们创建一个线程对象时,该对象表示的线程就立即 开始运行。

( 对 )2 、如果前台线程全部死亡,后台线程也会自动死亡。

( 对)3 、同步代码块中的锁对象可以是任意类型的对象 .

( 错 )4 、静态方法不能使用 synchronized 关键字来修饰。

(错)5 、线程结束等待或者阻塞状态后,会进入运行状态。

(错) 1、 String 对象和 StringBuffer 对象都是字符串变量, 创建后都可以修改。

(错) 2、用运算符“ ==”比较字符串对象时,如果两个字符串 的值相同,结果为 true 。

(对)3、System 类中的 currentTimeMillis() 方法返回一个

long

类型的值。

(错) 4、 Date 、 Calendar 以及 DateFormat 类都位于

包中。

(对) 5、 String 类的方法 replace (CharSequence srt1,

CharSequence srt2) 返回一个新的字符串,它是通过用 srt2 替 换此字符串中出现的所有 srt1 得到的。

(错) 1、 Set 集合是通过键值对的方式来存储对象的。( )

(对) 2、集合中不能存放基本数据类型,而只能存放引用数据 类型。 ( )

(对) 3、如果创建的 TreeSet 集合中没有传入比较器,则该集 合中存入的元素需要实现 Comparable 接口。 ( )

(错) 4、使用 Iterator 迭代集合元素时,可以调用集合对象的 方法增删元素。 ( )

(对) 5、 LinkedList 在内部维护了一个双向循环链表,每一个 元素节点都包含前一个元素节点和后一个元素节点的引用。 ( ) ( 错 )1 、如果一个 File 表示目录下有文件或者子目录,调用 delete() 方法也可以将其删除。 ( )

( 对 )2 、装饰设计模式中,装饰对象应该包含一个被装饰对象的 引用。 ( )

( 对 )3 、使用 ObjectInputStream 与 ObjectOutputStream 类来读 取或存储的对象必须要实现 Serializable 接口,否则程序将出 现

NotSerializableException 异常。 ( )

( 对 )4 、InputStream 类的 close() 方法是用于关闭流并且释放流 所占的系统资源。 ( )

( 错 )5 、一般来说,把字符转换成计算机识别的字节序列称为解 码,而把字节序列转换为普通人能看懂的明文字符称为编码。

( )

(对) 1、容器( Container )是一个可以包含基本组件和其它容 器的组件。 ( )

(错) 2、可以通过实现 ActionListener 接口或者继承 ActionAdapter

类来实现动作时间监听器。

(对) 3、 CardLayout 布局管理器将界面看做一系列卡片,在任 何时候只有其中一张卡片是可见的。 ( )

(错) 4、非模态对话框是指用户需要等到处理完对话框后才能 继续与其它窗口进行交互。 ( )

(错) 5、 JFrame 的默认布局管理器是 FlowLayout 。( )

(错)1.由于UDP是面向无连接的协议,可以保证数据的完整性,

因此在传输重要数据时 建议使用UDP协议().

(对) 2. 在网络通信中,对数据传输格式、传输速率、传输步骤 等作了统一规定, 只有通信双方共同遵守这个规定才能完成数 据的交互,这种规定称为网络传输协议。 ()

(对) 3. 在创建发送端的 DatagramPacket 对象时, 需要指定发

送端的目标 IP 地址和端口号。()

(错) 4. IPv4 版本的 IP 地址使用 4 个字节来表示, IPv6 版本 的

IP 地址使用 8 个字节来表示。 ()

(对)5.使用TCP协议通信时,通信的两端以10的方式进行数 据的交互。 ()

对) 1 、在定义一个类的时候,如果类的成员被 private 所修饰, 该成员不能在类的外部被直接访问。

(对) 2、Java 中的每个类都至少有一个构造方法,一个类中如 果没有定义构造方法, 系统会自动为这个类创建一个默认的构造 方法。

(错) 3、声明构造方法时,不能使用 private 关键字修饰。 (对)

4、类中 static 修饰的变量或方法,可以使用类名或对象 的引用变量访问。

(错) 5、方法内部类中不能访问外部类的成员变量。

思考题

1. 简述JAVA的特点

面向对象、跨平台性、健壮性、安全性、可移植性、多线程 性、动态性等。

2. 简述JRE和JDK的区别。。

JDK是Java开发工具包,它包含编译工具、解释工具、文 档制作工具、打包工具多种与开发相关的工具。 JRE是Java程

序运行时环境,它包含 Java 虚拟机、运行时的类包、 Java 应用 启动器以及一个 bin 目录。

3. 什么是方法重载

方法重载是指的是在一个类中可以声明多个同名的方法,而 方法中参数的个数或者数据类型不一致。调用这些同名的方 法时,JVM会根据实际参数的不同绑定到不同的方法。

4. 简述 break,continue,return 语句的区别

break跳出本一层循环;continue跳出本次循环,继续执 行下次循环;return 程序返回,不再执行下面的代码(结束当前 的方法直接

返回)

5. 构造方法和普通的成员方法有什么区别

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

6•请简述垃圾回收的优点和原理

java的一个重大特点就是引进了垃圾回收机制,它使得 java

程序员在编写程序的时候不用考虑内存管理。由于有了垃圾 回收机制,java中的对象不再有“作用域”的概念,只有对 象的引用才有“作用域”。垃圾回收机制有效的防止内存泄 露,有效的使用可以使用的内存。

7•什么是方法重写

在继承关系中,子类的方法与父类的某一方法具有相同的方 法名、返回类型和参数列表,则称子类的该方法重写父类的方法。

8. 什么是多态

9. 在面向对象语言 中,接口的多种不同的实现方式即为多态。

在同一个方法中。这总由于参数类型不同而导致执行效果各

异的现象。

10. 请简述方法重写和方法重载的区别同,重载是在同一个类中的两个或两个以上的方法,拥有相 同的方法名,但是参数却不相同,方法体也不相同 。

重写是子类的方法覆盖父类的方法,要求方法名和

11. 在JAVA中创建线程有几种方法

参数都相

一种是继承 包下的Thread类,重写Thread类的 run()方法, 另一种就是实现 Runnable接口,

Sleep()和wait()有什么区别

调用sleep()方法,正在执行的线程主动让出 CPU去执行其

他线程,在sleep()方法指定的时间过后,CPU才会回到 这个线程上继续往下执行,如果当前线程进入了同步锁, sleep()方法并不会释放锁,即使当前线程使用 sleep()

方法让出了 CPU但其它被同步锁挡住了的线程也无法 得到执行。wait()在一个已经进入了同步锁的线程内进 行调用,让当前线程暂时让出同步锁,以便其它正在等 待此锁的线程可以得到同步锁并运行。当其它线程调用 了 notify()方法后,调用wait()方法的线程就会解除 wait状态,当再次获得同步锁后,程序可以继续向下执 行。

12. 请简述 synchronized 禾口

的异同点

.c on curre

要相同点: Lock 能完成 synchronized 所实现的所有功

主要不同点: Lock 有比 synchronized 更精确的线程语 义和更好的性能。

synchronized 会自动释放锁,而 Lock 一定要求程序员 手工释放,并且必须在

finally 从句中释放。

13. 进程和线程之间有什么不同

进程和线程的主要差别在于它们是不同的操作系统资源管理

方式。进程有独立的地址空间,一个进程崩溃后,在保护模

式下不会对其它进程产生影响,而线程只是一个进程中的不

同执行路径。线程有自己的堆栈和局部变量,但线程之间没

有单独的地址空间,一个线程死掉就等于整个进程死掉,所

以多进程的程序要比多线程的程序健壮,但在进程切换时, 耗费资源较大,效率要差一些。 但对于一些要求同时进行并 且又要共享某些变量的并发操作,只能用线程,不能用进程。

14. .String 和 StringBuffer 类有什么区别

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

可以修改字符串的值。

15. 集合中的List , Set, Map有什么区别

List的特点是元素有序、元素可重复。List接口的主要实

现类有ArrayList 和LinkedList 。Set的特点是元素无序、 元素 不可重复。Set接口的主要实现类有 HashSet和TreeSet。Map 的特点是存储的兀素是键(Key)、值(Value)映射关系,兀素都是 成对出现的。Map接口的主要实现类有 HashMap和TreeMap。

16. 简述流的概念

Java程序通过流来完成输入和输出,流是输入或输出信息的 抽象。流通过Java的输入/输出系统与外设连接进行数据 通信。

17. 简要说明管道流

管道流分为管道输入流(Piped In putStream )和管道输出流

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

18. 简述包中提供哪些布局管理器

BorderLayout 边框 布局;

BoxLayout 布局;

CardLayout卡片布局;

FlowLayout流动布局;

GridBagLayout网格包布局;

GridLayout网格布局;

GroupLayout 布局;

SpringLayout 布局;

19. TCP和UDP协议有什么区别

UDP协议是无连接通信协议,所谓的无连接就是指数据的发 送端和接收端不建立逻辑连接。

TCP协议是面向连接的通信协议,即在传输数据前先在发送端 和接收端建立逻辑连接,然后再传输

机之间可靠无差错的数据传输。

数据,它提供了两台计算

编程题

P77第1题请编写程序,实现计算“ 1 +3+5+7+…+99

值。

提示:

① 使用循环语句实现自然数 1~99的遍历。

② 在遍历过程中,通过条件判断当前遍历的数是否为奇数, 如

果是就果加,否则

不加。

”的public static void main(String[] args) {

public class Test01 {

int sum = 0;

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

if (i % 2 != 0)

sum += i;

}

ntln( sum);

}

}

P112第1题1.请按照以下要求设计一个学生类

测试。

要求如下:

① Student类中包含姓名、成绩两个属性。

② 分别给这两个属性定义两个方法,一个方法用于设置值,

另一个方法用于获取值。

③ Student类中定义一个无参的构造方法和一个接收两个参 数的构造方法,两个参数分别为姓名和成绩属性赋值。

④ 在测试类中创建两个 Student对象,一个使用无参的构造

方法,然后调用方法给姓名和成绩赋值, 另一个使用有参的构造

方法,在构造方法中给姓名和成绩赋值。

Sudent,并进行

class Stude nt {

public static void main(String[] args) {

private String n ame;

private double grade;

public Stude nt() {

}

public Stude nt(Stri ng n ame, double grade) { this .n ame =

n ame;

= grade;

}

public Stri ng getName() {

return n ame;

}

public void setName(Stri ng n ame) {

this .n ame = n ame;

}

public double getGrade() {

return grade;

}

public void setGrade(double grade) { = grade;

}

}

public class Test01 {public static void main(String[] args) {

Student stul = new Student();

e("zha ngsa n");

de(99);

Student stu2 = new Student("lisi", 100);

}

}

P162

1. 设计一个学生类 Student和它的一个子类 UnderBTn金两个参 数的构造方法,用

一个包含两

① Student类有name(姓名)和age(年龄)属性,

的属

属性信息。

于给name和age属性赋值,一个show()方法打印

ude ne

有一个包含三个参数的

(学位)属性。

② 本科生类Undergraduate增加一个degree( 店

第三个参数给degree专业陆

构造方法,前两个参数用于给继承的 name

和age属性赋值。1

值,一个show()方法用于打印 Undergrad

duate

的属性信息。

sduate对象,调用它们的 show().

类中分别创建 Student对象和Undergradecin

如下:

和 Circle.

class Stude nt {

public Stri ng n ame;

public int age;

public Stude nt(Stri ng n ame,i nt age){

this .n ame=n ame;

=age;

}

public void show(){

n("name: "+name+" age: "+age);

}

}

class Un derGraduate exte nds Stude nt{

在测试le要求

public String degree;

public Un derGraduate(Stri ng n ame,i nt age,Stri ng

degree){

super( name, age);

=degree;

}

public void show(){

n("name: "+name+" age: "+age+"

degree: "+degree);

}

}

public class Test01{

public static void main(String[] args) {

Stude nt stude nt = new Stude nt("zha ngsa n", 16);

stude ();

Un derGraduate un derGraduate = new

Un derGraduate("lisi", 20, "bechalor");

un ();

}

}

2. 设计一个Shape接口和它的两个实现类 Square

妄收一个doub

ble类型的参数,返间-

①Shape接口中有个抽象方法

个double类型的结果。

,分别求正方形和圆形I

②Square 和Crede中实现了 Shape接口的are()抽象方法, 面积并返回。

在测试类中创建Square和Crle对象,计算边长为2的正方形面 积和半径为3的圆形面积。

area(),方法

in terface Shape {

double area(double give nV alue);

}

class Square impleme nts Shape{

public double area(double sideLe ngth) {

retur n sideLe ngth*sideLe ngth;

}

}

class Circle impleme nts Shape{

public double area(double r) {

return *r*r;

}

}

public class Test02 {

public static void main(String[] args) {

Shape square = new Square();

Shape circle = new Circle();

ntl n((2));

ntl n( (3));

}

}

3. 自定义一个异常类 NoThisSoundExcepion 和 Player 类,

在Player的play()方法

中使用自定义异常,要求如下:

① NoThisSongException 继承 Exception 类,类中有一个

无参和一个接收一个 Stri ng类型参数的构造方法,构造方法中 都使用super关键字调用父类的构造方法。

② Player类中定义一个play(int index)方法,方法接收

一个int类型的参数,表示播放歌曲的索引,当 index> 10 时,paly()

方法用throw关键字抛出 NoThisSongException异常, 创建异常对象时,调用有参的构造方法

存在”。

,传人“您播放的歌曲不

③ 在测试类中创建Player对象,并调用play()方法测试自

定义的NoThisSongException 异常,使用try ........... catch语句捕

获异常,调用 NoThisSongException 的 getMessage()方法打印 出异常信息

class NoThisS on gExcepti on exte nds Excepti on{

public NoThisS on gExceptio n(){

super();

}

public NoThisS on gExcepti on( Stri ng

message){ super(message);

}

}

class Player{

public void play(i nt in dex)throws

NoThisS on gExcepti on{

if(in dex>10){

throw new NoThisSongException(” 您播放的歌曲不 存在");

}

n(”

}

正在播放歌曲");

}

public class Test03 {

public static void main(String[] args) {

Player player = new Player();

try {

(13);

} catch (NoThisS on gExcepti on e) {

ntln (”

"+sage());

}

}

P198

异常信息为:

1.通过继承Thread类的方式创建两个线程,在Thread构造方法 中指定线程的字,并将这两个线程的名字打印出来。

2.通过实现Runnable接口的方式创建一个新线程,要求

线程打印100 "main",新线程打印50次“ new"。

.模拟三个老师同时分发 80份学习笔记,每个老师相当于一个 线程。

main

public class MyThread exte nds Thread{

public MyThread(Stri ng n ame) {

super( name);

}

public void run() {

ntl n(e());

}

public static void main(String[] args) {

new MyThread("Thread1").start();

new MyThread("Thread2").start();

}

}

2.通过实现Runnable接口的方式创建一个新线程, 要求main线

程打印100 "main",新线程打印50次“ new"。

public class MyRunn able impleme nts Runn able {

public void run() {

for (i nt i = 0; i < 50; i++) {

ntln (” new");

}

}

public static void main( Stri ng[] args) {

new Thread( new MyR unn able()).start();

for (i nt i = 0; i < 100; i++) {

ntln ("ma in");

}

}

}

P235

1编写一个程序,实现字符串大小写的转换牛倒序输出,要求如 下,①使用for循环将字符串"HelloWorld"从最后1个字符开始 遍历。

⑦遍历的当前字符如果是大写字符,就使用

uwer )方法将其转换为小写字

tolLowerCase

反之则使用toUpperCase()方法将其转换为大写字符

9定义一个StringButfer 对象,调用ppend()方法依次添加遍 历的字符,最后遇用。i Buffer对象的toString() 方法,并将得 到的结果输出。

public class Test01 {

public static void main(String[] args) {

Stri ng str = "HelloWorld";

//字符串转成char数组

char[] ch = Array();

Stri ngBuffer buffer = new Stri ngBuffer();

for (i nt i = ngth() - 1; i >= 0; i--) {

if (ch[i] >= 'A' && ch[i] <= 'Z') {

nd(Stri f(ch[i]).toLowerCase());

} else if (ch[i] >= 'a' && ch[i] <= 'z') {

nd(Stri f(ch[i]).toUpperCase());

}

}


本文标签: 方法 线程 对象