资源描述
说明:这是互联网1班的机密文档,不要随意外传,这里面的内容可能有些错误的,欢迎各位对这个文档进行修改,编程题有更好的方法的,也可以进行修改的了。最后成为完美的。这份文档仅供学习参考,不要只记答案,把原理搞明白啊。
一些解释和填代码为蓝色或红色字体,希望好好看看,如果有修改的,在群里说或者自己发个修正版文档。
题型及分数:
单项选择题 (每小题2分,共30分)
程序填空(每题5分,共20分)
阅读程序(每小题10分,共20分)
编程题(每小题10分,共30分)
一、 选择题
1、JAVA中提供了多种布局对象类。其中使用卡片式布局的是( D )。
A.FlowLayout (流式布局) B.BoederLayout (围界布局 顶层容器默的)
C.BoxLayout (盒子布局 是swing的) D.CardLayout(卡片布局)
补充:GridLayout(网格布局)
2、Swing与AWT的区别不包括 ( D )。
A.Swing是由纯Java实现的轻量级构件
B.Swing没有本地代码
C.Swing不依赖操作系统的支持
D.Swing支持图形用户界面 (都是支持的)
3、下列哪个选项是创建一个标识有"关闭"按钮的语句?( C )
A.JTextField b = new JtextField("关闭"); (文本框)
B.JTextArea b = new JTextArea("关闭"); (文本域)
C.JButton b = new Jbutton("关闭"); (按钮)
D.JCheckbox b = new Jcheckbox("关闭"); (复选框)
补充:JPasswordField(口令输入域)、JLabel(标签) 、JComboBox(组合框)
JList(列表框) 、JTable(表格) 、JMenu(菜单)、JDialog(对话框)
JOptionPane(标准对话框)、JFileChooser(文件对话框)
4、鼠标事件的监听器接口MouseListener能实现的事件不包括( D )。
A.按下 B.释放
C.点击 D.拖动
补充:还有的是进入和离开事件
窗口事件包括:关闭窗体、窗体失去焦点、获得焦点、最小化等
键盘事件包括:按下键盘按键、放开键盘按键、敲击键盘按键
5、每个使用Swing组件的程序必须至少有一个( B )。
A. 按钮 B. 顶层容器 C. 标签 D. 菜单
6、在Java中,而无需在程序中用import导入的包是( D )。
A.java.applet B.java.awt
C.java.util D.Java.lang (默认的)
7、类Panel默认的布局管理器是( C )。
A.GridLayout B.BorderLayout (顶层容器默认的)
C.FlowLayout (Panel面板默认的) D.CardLayout
8、java中用于创建文件对象的类是( A )。
A.File (文件) B. Object (对象)
C. Thread (线程) D. Frame (框架)
9、下列描述中,正确的是( C )。
A.在Serializable接口中定义了抽象方法
B.在Serializable接口中定义了常量
C.在Serializable接口中没有定义抽象方法,也没有定义常量
D.在Serializable接口中定义了成员方法
10、在读文件a.dat 时,能使用该文件名作为参数进行实例化的类是( D )。
A.BufferedReader BufferedReader(Reader in)
B.DataInputStream DataInputStream(InputStream in)
C.DataOutputStream DataOutputStream(OutputStream out)
D.FileInputStream FileInputStream(File file)
11、凡是从中央处理器流向外部设备的数据流称为( D )。
A.文件流 B.字符流
C.输入流 D.输出流
12、当线程被创建后,调用start()方法之前,其所处的状态是( C )。
A.阻塞状态 B.运行状态 (run) C.就绪状态 D.新建状态(new)
13、下面哪个关键字可以对对象加互斥锁。( A )
A.synchronized B.transient C.serialize D.static
14、为了得到当前正在运行的线程,可使用下列哪个方法?( B )。
A.getName() (获得名字) B.Thread.CurrentThread().
B.sleep() (睡眠) D.run() (运行)
15、ServerSocket的监听方法accept()的返回值类型是( C )
A.void B.Object C.Socket D.DatagramSocket
16、当使用客户端套接字Socket创建对象时,需要指定( A )
A.服务器主机名称和端口 B.服务器端口和文件
C.服务器名称和文件 D.服务器地址和文件
17、若要取得数据包的中源地址,可使用下列哪个方法?( A )
A.getAddress() B.getPort()
C.getName() (源文件名) D.getData() (日期)
18、程序与数据库连接后,需要查看某个表中的数据,使用下列哪个语句?( A )
A.executeQuery();(记录查询)B.executeUpdate(); (记录操作)
C.executeEdit(); D.executeSelect();
二、程序填空
1.下面程序实现如下界面:
import java.awt.*;
class Qualification extends Frame {
Checkbox t1=new Checkbox("Visual Basic");
Checkbox t2=new Checkbox("Visual C++");
Checkbox t3=new Checkbox("Java");
CheckboxGroup cg = new CheckboxGroup(); //复选框的组
Checkbox r1=new Checkbox("专科",cg,false);
Checkbox r2=new Checkbox("本科",cg,false);
Checkbox r3=new Checkbox("硕士",cg,false);
Checkbox r4=new Checkbox("博士",cg,false);
Label lb1=new Label("您的学历为:" );
Label lb2=new Label("您精通的语言为:" );
public Qualification(String s ) {
super(s);
setLayout(new GridLayout(10, 1)); //设置为网格布局10行一列
add(lb1);
add(r1);add(r2);add(r3);add(r4);
add(lb2);
add(t1);add(t2);add(t3);
}
public static void main(String args[]) {
Qualification q=new Qualification("学识!");
//new 一个新对象q 标题是“学识!”
q.setSize(400,250);
q.show( );
}
}
补充:这个程序主要是图形界面的基础,知道一些布局,知道一些组件使用方法,这些就差不多了。这个程序有点问题。程序网上地址:
2.下面程序从mytest.txt文件中读取字符,将读到的文字列在TextArea里面。
import java.awt.*;
import java.io.*;
public class BufferedReaderTest extends Frame {
public static void main(String args[]) {
String str;
BufferedReaderTest test=new BufferedReaderTest();
TextArea ta=new TextArea();
try { //建立一个BufferedReader流读取文件
BufferedReader breader=new
BufferedReader(new FileReader(mytext.txt)); //对象要是文件
while(true) {
str=breader.readLine(); //读取一行文字
if(str==null) //读到文件结尾
break;
ta.append(str+"\n"); //将读到的文字列在TextArea里面
}
}
catch(IOException e) { //捕获是否为文件未找到异常
}
test.add(ta,BorderLayout.CENTER);
test.setSize(500,200);
test.setVisible(true);
}
}
//这是一道IO流的题目,要注意一些流的基本语法,而且要记住捕获的是IO异常
3.下面程序实现了文件拷贝功能,从file1.txt 把文字复制到file2.txt。
import java.io.*;
public class filestream {
public static void main(String args[]){
try{
File inFile=new File(file1.txt); //源文件
File outFile=new File(file2.txt);//新文件
FileInputStream fis=new FileInputStream(inFile);
FileOutputStream fos=new FileOutputStream(outFile);
int c;
while((c=fis.read())!=-1)
fos.write(c); //新文件时写的,源文件是读的
fis.close();
fos.close();
}
catch(FileNotFoundException e) {
System.out.println("FileStreamsTest: "+e);
}
catch(IOException e) {
System.err.println("FileStreamsTest: "+e);}}
}
注意:文件读写流要注意,源文件是用来读(read)的,新文件用来写(write)的,不要弄错的了。
4.下面程序使用Swing设计一个窗口,窗口标题是“HelloSwing”,窗口包含一个标签“你好,Swing”。
import javax.swing.*;
public class HelloSwing {
public static void main(String[] args) {
JFrame frame = new JFrame(“HelloSwing”); //这个是窗体
JLabel label = new JLabel(“你好,Swing”); //这个是标签
frame.getContentPane().add(label);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,200); //设置窗体大小
frame.setVisible(true);
}
}
三、读程序写结果
1、import java.io.*;
public class CharInput
{
public static void main(String args[]) throws java.io.IOException
{
String s;
inputStreamReader ir;
BufferedReader in;
ir=new inputStreamReader(System.io);
in=new BufferedReader ir);
while ((s=in. readLine())!=null)
{
System.out.println(“Read;”+s);
}
}
}
输出结果为:Read:+(s的内容,就是键盘输入的)
2、import java.io.*;
import java.util.Date;
public class UnSerializeDate
{
UnSerializeDate()
{
Date d=null;
try
{
FileInputStream f=new
FileInputStream (“date.ser”);
ObjectInputStream s=new
ObjectInputStream(f);
d=(Date) s.readObject();
f.close();
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println(“Unserialized Date object from date.set”);
System.out.println(“Date:”+d);
}
public static void main(String args[])
{
new UnSerializeDate();
}
}
结果:会把date.ser文件里的内容读出来
补充:这个程序如何传参的:
这个程序中main方法中没有传参数。
而FileInputStream f = new FileInputStream ("date.ser");在构造的时候,其中参数"date.ser"是与这个程序在同一个目录下的一个文件的名字。这样就可以通过 f 来读这个文件中的内容。
而ObjectInputStream s = new ObjectInputStream (f); 这个是对象的反序列化,就是可以把一“序列化”到文件中的对象读出来。
四、程序设计
1、编写一个Java程序实现多线程,在线程中输出线程的名字,隔300毫秒输出一次,共输出20次。
源代码:
public class si1 extends Thread{
public static void main(String[] args) {
Thread[] si = new Thread[20]; //线程创建
for(int i = 0; i <20; i++) { //为了次数的限制
si[i] = new Thread();
si[i].start(); //线程就绪
System.out.println(si[i].getName());
System.out.println("线程睡眠300毫秒");
try {
Thread.sleep(300); //线程睡眠
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
}
2. 编写程序,在屏幕上显示带标题的窗口,并添加一个按钮。当用户单击按钮时,结束程序。
源代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class si2 {
private JFrame loginFrame = null;
private JPanel loginPanel = null;
private JPanel buttonPanel = null;
private JButton submit = null;
private void init() {
loginFrame = new JFrame("退出");
loginPanel = new JPanel();
buttonPanel = new JPanel();
submit = new JButton("退出");
loginFrame.setLayout(new GridLayout(3,1));
loginFrame.add(buttonPanel);
buttonPanel.add(submit);
submit.addActionListener(new ButtonListener());
loginFrame.pack();
loginFrame.setLocation(400, 300);
loginFrame.setSize(500,300);
loginFrame.setVisible(true);
loginFrame.setAlwaysOnTop(true);
}
private class ButtonListener implements ActionListener {
//监听按钮的
public void actionPerformed(ActionEvent event) {
String command = event.getActionCommand();
if("退出".equals(command)) {
System.exit(0);
}
}
}
public static void main(String[] args) {
new si2().init();
}
}
3. 编写程序实现窗口,包含一个标签、一个文本框和一个按钮,当用户单击按钮时,程序把文本框中的内容复制到标签中。
源代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class si3 {
private JFrame loginFrame = null;
private JPanel loginPanel = null;
private JPanel wenziPanel = null;
private JPanel biaoPanel = null;
private JPanel buttonPanel = null;
private JTextField wenziField = null;
private JLabel wenziLabel = null;
private JButton submit = null;
private void init() {
loginFrame = new JFrame("复制界面");
loginPanel = new JPanel();
wenziPanel = new JPanel();
biaoPanel = new JPanel();
buttonPanel = new JPanel();
wenziField = new JTextField(15);
wenziLabel = new JLabel("准备复制");
submit = new JButton("复制");
loginFrame.setLayout(new GridLayout(3,1));
loginFrame.add(wenziPanel);
loginFrame.add(biaoPanel);
loginFrame.add(buttonPanel);
biaoPanel.add(wenziLabel);
wenziPanel.add(wenziField);
buttonPanel.add(submit);
submit.addActionListener(new ButtonListener());
loginFrame.pack();
loginFrame.setLocation(400, 300);
loginFrame.setSize(500,300);
loginFrame.setVisible(true);
loginFrame.setAlwaysOnTop(true);
}
private class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
String command = event.getActionCommand();
String str= wenziField.getText();
if("复制".equals(command))
wenziLabel.setText(str);
}
}
public static void main(String[] arg) {
new si3().init();
}
}
4. 使用Socket技术,编写服务器端和客户端程序,实现服务器端和客户端的通信。服务器端接受客户端发送来的信息并回显,直到客户端发送结束标记END;客户端向服务器发送信息,并接受服务器端返回来的消息,并且回显。
源代码:
客户端:
import java.io.*;
import .*;
import java.util.*;
public class SocketClientTest {
public static void main(String[] args) {
try {
Socket clientSocket = new Socket("localhost", 1688);
InputStream inData = clientSocket.getInputStream();
OutputStream outData = clientSocket.getOutputStream();
PrintWriter toServer = new PrintWriter(outData, true);
Scanner sc = new Scanner(System.in);
Scanner data = new Scanner(inData);
String heading = data.nextLine();
System.out.println(heading);
while (sc.hasNextLine()) {
String line = sc.nextLine();
toServer.println(line);
String fromServer = data.nextLine();
System.out.println(fromServer);
if (fromServer.equals("Bye!")) {
System.out.println("Stop...");
break;
}
}
clientSocket.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
服务器:
import java.io.*;
import .*;
import java.util.*;
public class SocketServerTest {
public static void main(String[] args) {
System.out.println("欢迎来,服务器已启动了啊!.....");
try {
ServerSocket server = new ServerSocket(1688);
Socket fromClient = server.accept();
System.out.println("Connected to the client....");
InputStream inData = fromClient.getInputStream();
OutputStream outData = fromClient.getOutputStream();
PrintWriter toClient = new PrintWriter(outData, true);
toClient.println("服务器:Begin。。。");
Scanner data = new Scanner(inData);
while (data.hasNextLine()) {
String line = data.nextLine();
if (line.equalsIgnoreCase("END")) {
server.close();
toClient.println("Bye!");
break;
}
toClient.println("服务器为您服务!");
}
}
catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果:
启动服务器:
启动客户端:
对话:
展开阅读全文