java学习习题(2)

第8章:
1、简述线程的状态迁移过程。

通过new语句生成一个Thread对象时,该线程位于新生态,通过调用该对象的start方法可以使他位于可执行态,在这里,程序就可以执行我们写在run里面的方法了。在可执行态中,调用sleep方法和wait方法可使其位于阻塞态,在阻塞态中,该线程不会执行,也可以使用notify或notifyAll方法使程序重新回到可执行态。在新生态、可执行态、阻塞态中可以调用stop方法停止该线程。

2、Java有哪几种创建线程的方式?

主要有两种,第一种是通过Thread子类实现,另一种是通过runnable接口实现。

  1. 通过生成Thread类的子类,并在子类中覆盖run方法,再通过new调用即可生成线程。
  2. 先在一个类中实现runnable接口,并在这个类中实现run方法,再通过new生成这个类的对象,使用Thread(Runnable target)构造器生成Thread对象,target填写刚刚生成的对象即可(target填写实现了Runnable接口的对象)

3、启动一个线程用什么方法。

使用start来启动一个线程

4、利用多线程设计一个程序,同时输出10以内的奇数和偶数,以及当前运行的线程名称,输出数字完毕输出end。

package com.ttj;
public class testThread {
    public static void main(String[] args) {
        SubThread temp = new SubThread();
        Thread st1 = new Thread(temp, "thread_1");
        Thread st2 = new Thread(temp, "thread_2");
        st1.start();
        st2.start();
    }
}
class SubThread extends Thread {
    static int count = 0;
    @Override
    public void run() {
        try {
            if(this.getName().equals("thread_2")){
                System.out.println(Thread.currentThread().getName() + "****");
                synchronized(this){
                    wait();
                }
            }
            while(true){
                System.out.println(Thread.currentThread().getName() + ":" + (count++));
                synchronized(this){
                    notify();
                    if(count <= 9){
                        wait();
                    }
                    else{
                        break;
                    }
                }
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            System.out.println(Thread.currentThread().getName() + "end");
        }
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YolLs347-1636446525119)(./img/1.png)]

第9章:
1、什么叫做流?输入输出流分别对应那两个抽象类?

流是字节序列的抽象概念,能够连续读取数据或被写入数据的就称为流。

对于字节流,输入输出对于InputStream与OutputStream;对于字符流,输入输出对应Reader与Writer。

2、在Java语言中,输入输出流分为哪两种类型?

字符流与字节流。

3、举例说明File类与RandomAccessFile类的使用相同与不同处。

相同点:都可以实现对文件的读取与操作,都位于java.io包中。

不同点:File是对文件或目录的抽象,通过它可以实现对文件的打开、关闭、删除、重命名等面向文件的处理方法。

而RandomAccessFile类最大的特点就是可以实现对文件的随机访问。这个类兼具输入与输出功能,可以支持从文件任意位置读、写数据。通过它可以实现对文件具体内容的增删改查。

4、在输入输出流中,为什么要使用缓冲技术,它们对应的类是哪些?

使用缓冲技术可以减少读写次数,可以提高程序运行效率。对应BufferedInputStream与BufferedOutputStream。

5、编程实现从键盘输入数据,保存到指定的文件中。

import java.util.Scanner;
import java.io.*;
public class fileTest {
  public static void main(String[] args) {
      Scanner in = new Scanner(System.in);
      System.out.println("Please input file name like this: \"./test.java\"");
      String path = in.next();
      String data;
      System.out.println(path);
      FileOutputStream fos = null;
      BufferedOutputStream bos = null;
      try{
          //对象的声明应该在try外,不然对象在此代码块外将失效。finally关闭文件时将无法访问。
          fos = new FileOutputStream(path, true);
          bos = new BufferedOutputStream(fos);
          System.out.println("Please input the content to add:");
          data = in.next();
          bos.write(data.getBytes());//把字符转换成字节
          while(in.hasNext()){
              data = in.next() + " ";
              bos.write(data.getBytes());
          }
      }catch(IOException e){
          e.printStackTrace();
      }finally{
          try{//还要检查异常。
              bos.close();
              fos.close();
          }catch(IOException e){
              e.printStackTrace();
          }

          System.out.println("done");
      }
  }
}

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vpBRgxo5-1636446525123)(./img/2.png)]

相应文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OrCQG3zF-1636446525125)(./img/3.png)]

第10章:
1、请介绍java.net.Socket类最常用的三个方法 。

getInputStream 获取输入流,返回一个InputStream实例;

getOutStream 获取输出流,返回一个OutputStream实例。

getInetAddress 获取服务端端口。

2、请描述客户端/服务器结构的大致实现过程。

首先客户端向DNS服务器发送请求去寻找外网ip,通过ip向服务器发送请求,通过对应的端口号找到服务器端对应的服务,将相应的服务数据返回客户端。浏览器所在端口接收到数据后将内容呈现出来。

第11章:
1、请简述布局管理的概念,列出几种常见的布局管理器的名称。

布局管理指对组件的尺寸与位置进行管理。所有组件都会引用一个布局管理器的实例。

FlowLayout,BorderLayout,GridLayout,GridBagLagout,CardLayout。

2、在容器中调用的方法add()和setLayout()的作用是什么?

add(): 将部分组件加入该容器;

setLayout: 设置容器的布局管理器

3、举例说明如何在Swing中处理双击事件。

为待监听容器添加mouseListener,并实现鼠标点击事件。

xxx.addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent evt){
        if(evt.getClickCount()==2){
            //处理程序
        }
    }
})

4、什么是“事件”?

封装了GUI组件上发生的特殊事情(用户的点击、移动)

5、请说明java如何进行事件捕获。

为事件源注册事件监听器,再为相应的事件源书写事件处理程序。之后当事件发生时便会触发事件监听器,再由事件监听器调用相应的程序。

6、ActionEvent 中触发动作为“在文本框中输入回车”的代码如何实现?请查询资料后写出样例程序。

package com.ttj;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class bsp_GUI {
    public static void main(String[] args) {
        JFrame jf = new JFrame("title");
        JTextArea jta= new JTextArea("在文本框中输入回车");
        jf.add(jta);
        jf.setLayout(new FlowLayout());
        jf.setSize(600, 400);
        jf.setVisible(true);
        jta.addKeyListener(new KeyAdapter(){
            public void keyPressed(KeyEvent e){
                if(e.getKeyCode() == '\n'){
                    System.out.println("You have pressed. ");
                }
            }
        });
    }
}

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QSECaq9r-1636446525128)(./img/4.png)]

               System.out.println("You have pressed. ");
            }
        }
    });
}

}


运行结果:

[外链图片转存中...(img-QSECaq9r-1636446525128)]
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值