1、Java 基础入门习题答案第 1 章 Java 开发入门一、填空题 1、 Java EE、Java SE、Java ME 2、 JRE 3、 javac 4、 bin 5、 path、classpath 二、选择题 1、ABCD 2、C 3、D 4、 B 5、B 三、简答题 1、 面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。 2、 JRE(Java Runtime Environment,Java 运行时环境) ,它相当于操作系统部分,提供了 Java 程序运 行时所需要的基本条件和许多 Java 基础类,例如,IO 类、GUI 控件类、网络类等。JRE 是提供给 普通用
2、户使用的,如果你只想运行别人开发好的 Java 程序,那么,你的计算机上必须且只需安装 JRE。 JDK(Java Development Kit,Java 开发工具包) ,它包含编译工具、解释工具、文档制作工具、打 包工具多种与开发相关的工具,是提供给 Java 开发人员使用的。初学者学习和使用 Java 语言时, 首先必须下载和安装 JDK。 JDK 中已经包含了 JRE 部分, 初学者安装 JDK 后不必再去下载和安装 JRE 了。 四、编程题public class HelloWorld public static void main(String args) System.out.p
3、rintln(“这是第一个 Java 程序!“); 第 2 章 Java 编程基础一、填空题 1、 class 2、 true 和 false 3、 单行注释、多行注释、文档注释 4、 基本数据类型、引用数据类型 5、 1、2、4、 8 6、 语句时已经超过了 y 变量的作用域,所以编译无法通过。 3、 打印结果为:3。 4、 打印结果为:9 8 7 五、问答题 1、Java 语言的八种基本数据类型有:byte 字节型,占一个字节。short 短整型,占两个字节。int 整型, 占 4 个字节。long 长整型,占 8 个字节。float 单精度浮点型,占 4 个字节。double 双精度浮点
4、型, 占 8 个字节。char 字符型,占两个字节。boolean 型,表示逻辑值,有 true 和 false 两个值,分别占 一个字节。 2、如果使用“ boolean b = x 0 表达是会发生被 0 除异常, 因为 x / y 的表达式执行 了。而 boolean b = x 0 是不会出现这种异常的,因为 x 0) y = x + 3; else if (x = 0) y = 0; else y = x * x - 1; return y; 3、参考答案public class Test03 public static void main(String args) int arr
5、= 25, 24, 12, 76, 101, 96, 28 ; for (int i = 0; i arrj + 1) / 比较相邻元素 / 下面的三行代码用于交换两个元素 int temp = arrj; arrj = arrj + 1; arrj + 1 = temp; for (int i = 0; i 10) throw new NoThisSongException(“您播放的歌曲不存在“); System.out.println(“正在播放歌曲“); public class Test03 public static void main(String args) Player pl
6、ayer = new Player(); try player.play(13); catch (NoThisSongException e) System.out.println(“异常信息为: “+e.getMessage(); 第 5 章 多线程一、填空题 1、 线程、通信 2、 Thread、Runnable 3、 就绪 4、 synchronized、对象、this 5、 进程 6、新建状态(New)、 就绪状态(Runnable)、 运行状态(Running)、 阻塞状态(Blocked)、 死亡状态(Terminated) 7、 10、1 8、 开启一个新线程、run()方法 9
7、、 wait()、notify()、notifyAll() 10、setDaemon(true)、start() 二、判断题 1、错 2、对 3、对 4、错 5、错 三、选择题 1、B 2、AC 3、ABC 4、BC 5、ABD 6、ABC 7、C 8、D 9、AB 10、ABCD 四、程序分析题 1、程序不能编译通过,因为 RunHandler 类没有实现 Runnable 接口,因此 RunHandler 的实例对象不 能作为参数传递给 Thread 的构造方法。 2、程序不能编译通过,因为 Thread 的子类 A 重写的 run()方法的访问级别不能低于父类 run()方法的。 访问级
8、别 3、程序不能编译通过,因为同步方法中调用 wait()方法的对象必须为同步锁对象。 4、t.start(); 五、简答题 1、一种是继承 java.lang 包下的 Thread 类,覆写 Thread 类的 run()方法,在 run()方法中实现运行在线 程上的代码。new Thread() public void run() .start();另一种就是实现 java.lang.Runnable 接口,同样是在 run()方法中实现运行在线程上的代码。new Thread(new Runnable() public void run() ).start()2、调用 sleep()方法
9、,正在执行的线程主动让出 CPU 去执行其他线程,在 sleep()方法指定的时间过后, CPU 才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep()方法并不会释放锁, 即使当前线程使用 sleep()方法让出了 CPU,但其它被同步锁挡住了的线程也无法得到执行。wait()在一个已经进入了同步锁的线程内进行调用,让当前线程暂时让出同步锁,以便其它正在等待此 锁的线程可以得到同步锁并运行。当其它线程调用了 notify()方法后,调用 wait()方法的线程就会 解除 wait 状态,当再次获得同步锁后,程序可以继续向下执行。 六、编程题 1、参考答案public clas
10、s MyThread extends Thread public MyThread(String name) super(name); public void run() System.out.println(this.getName(); public static void main(String args) new MyThread(“Thread1“).start(); new MyThread(“Thread2“).start(); 2、参考答案public class MyRunnable implements Runnable public void run() for (int
11、 i = 0; i 0) try Thread.sleep(10); / 经过的线程休眠 10 毫秒 catch (InterruptedException e) e.printStackTrace(); System.out.println(Thread.currentThread().getName() + “-发出的笔记“ + notes-); 4、参考答案public class Accumulator extends Thread private int stratNum; public static int sum; public Accumulator(int startNum)
12、 this.stratNum = startNum; public static synchronized void add(int num) sum += num; public void run() int sum = 0; for (int i = 0; i = 0; i-) if (chi = A Iterator it = hobbies.iterator(); while (it.hasNext() area.append(it.next() + “ “); / 如果 gender 不为空字符串,打印性别 if (!“.equals(gender) area.append(“你的性
13、别为: “ + gender); public Information() /添加标签、单选和复选按钮 panel.add(lb1); panel.add(cb1); panel.add(cb2); panel.add(cb3); panel.add(lb2); panel.add(rb1); panel.add(rb2); bg.add(rb1); bg.add(rb2); / 为单选和复选按钮添加事件监听器 cb1.addActionListener(listener1); cb2.addActionListener(listener1); cb3.addActionListener(li
14、stener1); rb1.addActionListener(listener2);rb2.addActionListener(listener2); / 将 JPanel 面板和 JScrollPane 面板添加到 JFrame 容器中 Container container = this.getContentPane(); container.add(panel, BorderLayout.NORTH); container.add(pane, BorderLayout.CENTER); this.pack(); this.setDefaultCloseOperation(JFrame.
15、EXIT_ON_CLOSE); this.setVisible(true); public static void main(String args) new Information(); 3、参考答案import javax.swing.*; import java.awt.*; import java.awt.event.*; public class MyMenu extends JFrame implements ActionListener JLabel label = new JLabel(“请选择菜单“ JLabel.CENTER); JMenuItem aaMenuItem,
16、baMenuItem; MyMenu() JMenuBar menuBar = new JMenuBar(); JMenu aMenu = new JMenu(“菜单 A“); JMenu bMenu = new JMenu(“菜单 B“); JMenuItem aaMenuItem = new JMenuItem(“菜单项 AA“); JMenuItem abMenuItem = new JMenuItem(“菜单项 AB“); JMenuItem baMenuItem = new JMenuItem(“菜单项 BA“); menuBar.add(aMenu); menuBar.add(bM
17、enu); aMenu.add(aaMenuItem); aMenu.addSeparator(); aMenu.add(abMenuItem); bMenu.add(baMenuItem); aaMenuItem.addActionListener(this); abMenuItem.addActionListener(this); baMenuItem.addActionListener(this); setJMenuBar(menuBar); getContentPane().add(label, BorderLayout.CENTER); public void actionPerfo
18、rmed(ActionEvent e) JMenuItem source = (JMenuItem) (e.getSource(); label.setText(“选择了菜单:“ + source.getText();label.setHorizontalAlignment(JLabel.CENTER); public static void main(String args) JFrame frame = new MyMenu(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 200); f
19、rame.setVisible(true); 第 10 章网络编程一、填空题 1、面向连接、客户端、服务器端 2、2、0-65535 3、链路层、网络层、运输层、应用层 4、InetAddress 5、DatagramPacket 、DatagramSocket 二、判断题 1、错 2、对 3、对 4、错 5、对 三、选择题 1、C 2.A 3、ABD 4、B 5.、A 6、D 7、 B 8、C 四、简答题 1、在 Internet 中传输数据都需要遵守一定的规则,这种规则通常被称作网络通信协议。网络通信协议 对数据传输格式、传输速率、传输步骤等作了统一规定,通信双方必须共同遵守这个规定才能完
20、 成数据的交互。到目前为止,网络通信协议已经有很多种,其中 TCP/IP 协议在世界范围内应用最 为广泛。 2、UDP 协议是无连接通信协议,所谓的无连接就是指数据的发送端和接收端不建立逻辑连接。由于 UDP 协议消耗资源小,通信效率高,通常都会用于音频、视频和普通数据的传输。UDP 协议在传 输数据时不能保证数据的完整性,因此在传输重要数据时不建议使用 UDP 协议。 TCP 协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传 输数据,它提供了两台计算机之间可靠无差错的数据传输。在 TCP 连接中必须要明确客户端与服 务器端,由客户端向服务端发出连接请求,每次连
21、接的创建都需要经过“三次握手” 。 3、ServerSocket 类用于创建服务端程序,通过调用 ServerSocket 对象的 accept()方法,接收来自客户端 的请求。 Socket 类用于创建客户端程序,当客户端和服务端的两个 Socket 建立了专线连接后,连接的一端 既能向另一端连续写入字节,也能从另一端读取字节。Socket 类中定义了 getInputStream()方法返 回 Socket 的输入流对象,定义了 getOutputStream()方法返回 Socket 的输出流对象。只要连接的一 端向该输出流对象写入了数据,连接的另一端就能从其输入流对象中读取到。 五、编
22、程题 1、参考答案import .InetAddress; public class Test01 public static void main(String args) throws Exception InetAddress localAddress = InetAddress.getLocalHost(); InetAddress remoteAddress = InetAddress.getByName(““);System.out.println(“本机的 IP 地址:“ + localAddress.getHostAddress(); System.out.println(“本地
23、的主机名:“ + localAddress.getHostName(); System.out.println(“甲骨文 的 IP 地址:“ + remoteAddress.getHostAddress(); 2、 参考答案 接收端:import .*; public class Test02 public static void main(String args) throws Exception byte buf = new byte1024; DatagramSocket ds = new DatagramSocket(8001); DatagramPacket dp = new Dat
24、agramPacket(buf, 1024); ds.receive(dp); String str = new String(dp.getData(),0, dp.getLength(); System.out.println(str); ds.close(); 发送端import .*; public class Test03 public static void main(String args) throws Exception DatagramSocket ds = new DatagramSocket(3000); String str = “hello world“; Datag
25、ramPacket dp = new DatagramPacket(str.getBytes(), str.length(), InetAddress.getByName(“localhost“), 8001); ds.send(dp); ds.close(); 3、参考答案 服务端import java.io.*; import .*; public class Test04 public static void main(String args) throws Exception new TCPServer().listen(); class TCPServer public void l
26、isten() throws Exception ServerSocket serverSocket = new ServerSocket(8002);Socket client = serverSocket.accept(); OutputStream os = client.getOutputStream(); os.write(“hello world“).getBytes(); Thread.sleep(5000); os.close(); client.close(); 客户端import java.io.*; import .*; public class Test05 publi
27、c static void main(String args) throws Exception new TCPClient().connect(); class TCPClient public void connect() throws Exception Socket client = new Socket(InetAddress.getLocalHost(), 8002); InputStream is = client.getInputStream(); byte buf = new byte1024; int len = is.read(buf); System.out.println(new String(buf, 0, len); client.close();