java期末复习知识点整理(下)
Posted eyes++
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java期末复习知识点整理(下)相关的知识,希望对你有一定的参考价值。
异常处理
-
Java的异常处理的基本概念
-
理解JVM中的运行错误和Java的异常类之间的对应关系(由JVM帮我们对应);
-
掌握PPT中关于异常的那张图(异常产生、传递、处理的流程图)
-
Java中异常类的分类:运行时异常、非运行时异常,分类标准是什么,分类的目的是什么?
-
异常的两种处理方法:(1)try-catch(重点);(2)在函数头部声明
-
自定义异常——了解一下:throw与throws的区别
多线程
-
Thread,Runnable是Java多线程编程中最重要的类、接口
-
多线程的四种状态图;
-
两种编写多线程程序的方法——要会写代码。理解两种方法的区别、优缺点
继承Thread类:
package multithreading.test;
// 1.创建一个继承于Thread类的子类
class MyTest extends Thread {
// 2.重写Thread类中的run()
@Override
public void run() {
for (int i = 0; i < 1000; i++) {
System.out.println(1);
}
}
}
public class Test {
public static void main(String[] args) {
// 3.创建Thread类的子类的对象
MyTest t1 = new MyTest();
// 4.通过此对象调用start
t1.start();
for (int i = 0; i < 1000; i++) {
System.out.println("hello");
}
}
}
实现Runnable接口:
package multithreading.test;
public class Test2 implements Runnable{
@Override
public void run(){
for (int i = 0; i < 1000; i++) {
System.out.println(1);
}
}
public static void main(String[] args){
Thread t1 = new Thread(new Test2());
t1.start();
for (int i = 0; i < 1000; i++) {
System.out.println("hello");
}
}
}
采用继承Thread类方式:
(1)优点:编写简单,如果需要访问当前线程,无需使用Thread.currentThread()方法,直接使用this,即可获得当前线程。
(2)缺点:因为线程类已经继承了Thread类,所以不能再继承其他的父类。
采用实现Runnable接口方式:
(1)优点:线程类只是实现了Runable接口,还可以继承其他的类。在这种方式下,可以多个线程共享同一个目标对象,所以非常适合多个相 同线程来处理同一份资源的情况,从而可以将CPU代码和数据分开,形成清晰的模型,较好地体现了面向对象的思想。
(2)缺点:编程稍微复杂,如果需要访问当前线程,必须使用Thread.currentThread()方法。
- 了解Java中临界资源的同步,使用synchronized关键字
- 线程的Thread.sleep(), Thread.currentThread()获得当前正在运行线程
网络编程
- URL类的使用,InputStream openStream()会使用字节流、URL类下载网上的文件资源——会编程
package network.work;
import java.io.*;
import java.net.*;
public class Url {
public static void main(String[] args) {
try {
URL url = new URL("https://cdn.jsdelivr.net/gh/YuJiZhao/picbed/108.jpg");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.connect();
InputStream is = urlConnection.getInputStream();
FileOutputStream fos = new FileOutputStream("yuanshen.png");
byte[] buffer = new byte[1024];
int len;
while((len = is.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
is.close();
fos.close();
urlConnection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 重点:理解Socket通信的模型、原理;掌握ServerSocket、Socket类的用法;基于Socket的网络通信程序的编写(结合实验三)
服务端:
package network.work;
import java.io.*;
import java.net.*;
public class Work3_server {
public static void main(String[] args) {
try{
//1、创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口
ServerSocket serverSocket = new ServerSocket(10086);//1024-65535的某个端口
//2、调用accept()方法开始监听,等待客户端的连接
Socket socket = serverSocket.accept();
//3、获取输入流,并读取客户端信息
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String info =null;
while((info=br.readLine()) != null){
System.out.println("我是服务器,客户端说:" + info);
}
socket.shutdownInput();//关闭输入流
//4、获取输出流,响应客户端的请求
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.write("欢迎您!");
pw.flush();
//5、关闭资源
pw.close();
os.close();
br.close();
isr.close();
is.close();
socket.close();
serverSocket.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}
客户端:
package network.work;
import java.io.*;
import java.net.*;
public class Work3_client {
public static void main(String[] args) {
try{
//1、创建客户端Socket,指定服务器地址和端口
Socket socket = new Socket("localhost",10086);
//2、获取输出流,向服务器端发送信息
OutputStream os = socket.getOutputStream();//字节输出流
PrintWriter pw = new PrintWriter(os);//将输出流包装成打印流
pw.write("用户名:admin;密码:123");
pw.flush();
socket.shutdownOutput();
//3、获取输入流,并读取服务器端的响应信息
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String info = null;
while((info=br.readLine()) != null){
System.out.println("我是客户端,服务器说:" + info);
}
//4、关闭资源
br.close();
is.close();
pw.close();
os.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
GUI
- 掌握基本的GUI组件的使用:Label,Button,TextField,TextArea,Choice等等
Label构造函数:
- Label() 创造一个包含空字符串的Label组件
- Label(String text) 创造一个包含text字符串的Label组件
- Label(String text, int alg) 创造一个包含text字符串的Label组件,并指定字符串对齐方式
Label类的方法定义:
- int getAlignment() 获得Label组件的对齐方式
- String getText() 获得Label组件的字符串
- void setAlignment(int alg) 设置组件的对齐方式
- void setText(String text) 设置Label组件显示的字符串
TextField类的构造函数:
- TextField() 创建一个单行文本区组件
- TextField(int columns) 根据指定的宽度创建单行文本区组件
- TextField(String text) 创建包含指定字符串的单行文本区组件
- TextField(String text, int columns) 结合上述两点
TextField类的常用方法:
- int getCoumns() 获得单行文本区的可见部分宽度
- boolean echoCharlsSet() 测试此单行文本区是否设置遮蔽字符
- char getEchoChar() 获得此文本区的遮蔽字符
- dimension getMinimumSize() 获得此单行文本区可显示的最小范围
- void setColumns(int columns) 设置单行文本区的可见部分的宽度
- void setText(String s) 设置此单行文本区欲显示的文字字符串
TextArea类的属性:
- SCROLLBARS_BOTH 同时显示垂直与水平滚动条
- SCROLLBARS_NONE 不显示任何滚动条
- SCROLLBARS_HORIZONTAL_ONLY 只显示水平滚动条
- SCROLLBARS_VERTICAL_ONLY 只显示垂直滚动条
TextArea类的构造函数
- TextArea() 使用默认值创造一个文本区文件
- TextArea(int row,int columns) 使用指定的列数与行数创建一个文本区组件
- TextArea(String text) 在创建文本区时将指定的字符串加入并使用指定的列数与行数
- TextArea(String text,int rows,int cols) 在创建文本区时将指定的字符串加入并使用指定的列数与行数
- TextArea(String text,int rows,int cols,ine scrollbaes) 使用指定的列数、行数、字符串与滚动条显示形式来创建文本区
- String getSelectedText) 获得此文本组件中已被选中的文字
- void setEditable(Boolean b) 设置是否允许编辑文本区
- void selectAll() 设置文本组件中所有的文字
TextArea类的常用办法
- void append(String str) 将指定字符串加入到文本区中的最后位置
- int getCoumns() 获得文本区的行数
- int getrows() 获得文本区的列数
- int getScrollbarVisibility() 获得文本区的滚动条的显示形式
- int getScrollbarVisibility() 获得文本区的滚动条的显示形式
- void insert(String str,int pos) 插入指定的字符串到文本区中的指定位置
- void replaceRange(String str,int start,int end) 将指定的开始与结束位居中的字符串用指定的字符串取代
- void setCoumns(int columns)设置文本区的行数
- void setRows(int rows) 设置文本区的列数
Button类的构造函数
- Button() 创造一个没有标签的按钮组件
- Button(String label) 创建一个含有标签的按钮组件
Button 类的常用办法
- String getLabel() 获得按钮组件的标签
- void setLabel(String label) 设置按钮组件的标签
Choice类的构造函数
- Choice() 创建一个没有选项的下拉列表
- void add(String item) 在下拉列表中加入选项
- void addltem(String item) 在下拉列表中加入选项
- String getltem(int index) 获得下拉列表中指定位置的选项名称
- int getltemCount() 获得下拉列表所有选项的个数
- int getSelectedIndex() 获得下拉列表中被选取选项的位置
- String getSelectedltem 获得下拉列表中被选取的名称
- getSelectedObjects(0) 获得下拉列表中所有被选取的选项
- void insert(String item,int idx) 插入新的选项到指定位置
- void remove(int position) 删除指定位置的下拉列表选项
- void remove(String item) 删除指定名称的下拉列表选项
- void removeAll()删除所有的下拉列表选项
- void select(int pos) 选取下拉列表中指定位置的选项
- void select(String str) 选取下拉列表中指定名称的选项
-
掌握常用的容器Frame,Panel的使用(知道四种容器:(1)Window ,Frame——默认布局BorderLayout;(2)Panel,Applet)——默认布局FlowLayout
-
容器的最常用的方法add(),setLayout(),setSize(),setVisible()
package GUI;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Test3 {
public static void main(String[] args) {
Frame frame = new Frame();
// 布局的概念
Panel panel = new Panel();
// 设置布局
frame.setLayout(null);
// 坐标
frame.setBounds(300, 300, 500, 500);
frame.setBackground(new Color(100, 80, 200));
// panel设置坐标, 相对于frame
panel.setBounds(50, 50, 400, 400);
panel.setBackground(Color.red);
// 将面板添加至frame
frame.add(panel);
// 设置可见性
frame.setVisible(true);
// 添加监听事件,监听窗口关闭事件 System.exit(0)
// 适配器模式
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) { // 程序关闭要做的事情
// 结束程序
System.exit(0);
}
});
}
}
-
AWT事件监听模型,PPT那张图、那张表要掌握
-
以ActionEvent为例,自己编写一个按钮的消息响应代码(实验三全部包含)
计数器案例:
package GUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Objects;
public class Test7 {
static int num = 0;
public static void main(String[] args) {
// 窗口
Frame frame = new Frame("Counter");
frame.setVisible(true);
frame.setSize(400, 350);
// 显示面板
Panel showPanel = new Panel(null);
showPanel.setBounds(0, 0, 400, 275);
TextField textfield = new TextField("0");
textfield.setBounds(50, 37, 300, 200);
showPanel.add(textfield);
// 操作面板
Panel operPanel = new Panel();
operPanel.setBounds(0, 275, 400, 75);
Button addbtn = new Button("+");
Button redbtn = new Button("-");
operPanel.add(addbtn);
operPanel.add(redbtn);
// 布局
// frame.setLayout(new FlowLayout()); // 流式布局
frame.add(showPanel, BorderLayout.NORTH);
frame.add(operPanel, BorderLayout.SOUTH);
// 事件
AddActionListener myAddActionListener = new AddActionListener(textfield, num);
addbtn.addActionListener(myAddActionListener);
redbtn.addActionListener(myAddActionListener);
// 窗口可关闭
frame.addWindowListener(
new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);
}
}
// 点击事件
class AddActionListener implements ActionListener {
TextField textfield;
int num;
AddActionListener(TextField textfield, int num) {
this.textfield = textfield;
this.num = num;
}
@Override
public void actionPerformed(ActionEvent e){
String s = e.getActionCommand();
if (Objects.equals(s, "+")) num += 1;
if (Objects.equals(s, "-")) num -= 1;
this.textfield.setText(String.valueOf(num));
}
}
如果有兴趣了解更多相关知识,欢迎来到我的个人网站看看:eyes++的个人空间
以上是关于java期末复习知识点整理(下)的主要内容,如果未能解决你的问题,请参考以下文章
期末复习c++知识点大回顾,八篇文章让你永不破防(建议收藏)
期末复习c++知识点大回顾,八篇文章让你永不破防(建议收藏)
期末复习c++知识点大回顾,八篇文章让你永不破防(建议收藏)