Java复习笔记(Wust)

2022-07-26,,,

第一章.Java概述

JDK工具箱与JVM

  • javac:用于将java源文件编译为字节码保存在.class文件中
  • java:用于运行.class字节码文件或jar文件
  • java通过JVM技术实现平台无关

Java类库

库名 作用
java.io 凡是需要完成与操作系统有关的较底层的输入/输出操作的java程序,都需要引入java.io
java.lang 包含基本数据类型,数学方法,String,Thread(线程),Expection(异常处理类)等。
java,util 工具包,包含了一些实用工具,如处理时间的Date类,处理变长数组的Vector类,实现集合Collection接口及其子接口和子类等
java.awt java的GUI库,包含图形界面组件,低级绘图操作,布局管理和事件处理模型
java.swing GUI库
java.sql 实现JDBC的类库,利用这个包可以使java程序具有访问不同数据库的功能
java.net 实现网络功能的类库
  • 程序运行时,系统会自动引入java.lang包
  • 在同一个包中的类可以相互访问,访问其他包中的类则需要import引入

其他

  • main方法是程序运行的入口,可接受命令行参数
  • 每个类编译完成后,会生成各自的字节码文件
  • 同一个java源文件中,最多包含一个用public修饰的类
  • public修饰的类必须与源文件名同名(大小写敏感)
  • Java标准版主要用于桌面级的应用和数据库的开发

第二章.Java语言基础

标识符定义

  • 标识符开头必须是①下划线_ ②字母 ③美元符$ 后面接这三种类型或数字
  • 关键字和保留字都是小写,且无sizeof运算符

数据类型

1.基本数据类型

​ 8种基本数据类型:

​ byte,short,int,long(整型)

​ float,double,(浮点型)

​ char,boolean。

  • float类型后面必须加f,否则表示double类型。
  • 对于基本数据类型的变量,内存空间中存放的是它的值。
  • 数字值不能自动转换为布尔值。

2.引用数据类型

  1. String类型
  2. StringBuffer类型
  3. StringTokenizer类型
  • String类型创建后不能再做修改,StringBuffer类型可扩充,可修改,是可变长的字符串。

​ 4.数组

​ 声明方法:int [] arr =new int[5], length属性表示数组长度。

3.与日期、时间、数学相关的类

  1. Date类,默认为时间戳。
  2. 格式化类:DateFomat(抽象类),SimpleDateFormat(前者的子类)
  3. Math类,提供了一些数学操作。

Java内置异常

  • 异常处理就是异常发生后,应用程序能够转移到一个安全状态,使得系统能够恢复控制权或降级运行或正常结束程序运行
  • 所有异常皆继承自Throwable类,若提问直接继承,则是Exception类

第三章.Java面向对象的程序设计

包与类

  • 一个源文件中最多只能由一条package语句
  • 如果源文件中包含了多个类或者接口的定义,则会编译成多个类或接口对应的.class文件,它们都位于相同的包

类的构造方法

  • 构造方法:1.与类同名 2.不能声明返回类型 3.不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承,所以用final和abstract修饰没有意义
  • 在匿名类或内部类中使用this,指的是匿名类或内部类本身,要想调用外部类,则必须使用 外部类.this 这种方法

访问权限控制

控制符 修饰的元素 可访问范围
public 类,变量和方法 所有类
default 类,变量和方法 同一个包中的类
protected 变量和方法 同一个包中类,所有子类
private 变量和方法 仅本类

继承

  • Java不支持多继承。
  • 子类将继承父类非私有的属性和方法(考试按这个来)。
  • 覆盖:父类与子类之间,重载:同一个类中。
  • 覆盖和重载都要求必须同名,final修饰的方法,重载√ 覆盖×。
  • 子类方法覆盖时改变不了方法的访问权限。
  • super可以引用子类的直接父类,通常用来引用父类的成员变量或方法(前提是成员是public类型)

接口与抽象类

  • 抽象类可以有构造方法,但构造方法不可被声明为抽象方法。
  • 抽象类不可被实例化,即不能new,但可声明对象。
  • 抽象类可以有实例变量和具体方法。
  • 抽象类不能用final修饰。
  • 抽象类的子类必须覆盖父类的所有抽象方法才能变成非抽象类。
  • abstract不能与private,static,final并列修饰同一个方法,因为不能被继承或者覆盖
  • 接口是一种特殊的抽象类,当抽象类所有方法都是抽象时即可将class变为interface,接口中所有方法都默认为public abstract类型。
  • 一个类可以实现多个接口。
  • 实现接口必须给出接口中所有方法的方法体。
  • 接口中不能定义静态方法,但能定义常量值,常量值默认使用public abstract final修饰的。

类的高级特征

  • static静态代码块只会初始化一次,就是类被装载时。
  • static方法仅能调用其他静态方法或静态变量,因为调用其他非静态方法需要实例对象,因此需要构造函数,可是static初始化时构造函数还未初始化,因此static方法中不能用this或者super。
  • final修饰的类不可被继承,修饰的方法不可被覆盖,修饰的变量初始化后不允许再改变。好处:把方法锁定,防止任何继承类修改它的意义和实现。

第四章.Java进程与多线程

线程创建与启动

  • 进程中可有多个线程,每一个线程可以看成由代码、一个虚拟CPU以及数据三部分组成。
  • 创建线程的方法有两种:①继承Thread并覆盖run()方法 ②实现Runnable接口创建并重写run()方法。
  • 启动线程:先实例化一个有run方法的类,然后new 一个thread对象,用该类去实例化此thread对象,然后此thread对象调用start()方法。

线程操作与协作

  • 线程休眠:run方法中调用Thread.sleep(毫秒数)
  • 线程协作:synchronized可占有某个对象obj,此对象可以应用wait阻塞线程,obj.wait()。应用notify方法唤醒wait队列中的第一个线程,obj.notify()。应用notifyAll方法唤醒队列中所有线程。

第五章.Java集合框架和泛型

  • Map接口是间接继承自Iterable。
  • Map有几个重要方法,①ketSet():返回key的集合 ②put():存放键值对 ③get():获取键对应的值 ④size():统计元素个数

第六章.JavaUI设计及图形功能

布局管理器及常用布局

  • BorderLayout(默认布局):东南西北中位置布局。
  • FlowLayout:从左往右排列。
  • GridLayout
  • 空布局

容器

  • Frame,Applet,Dialog都是顶层容器,不需要其它组件的支撑。
  • 其它都是非顶层组件,需要依赖顶层容器才能显示。

第七章.Java I/O操作与文件读写

I/O分类

  • 流分字节流和字符流。
  • 字节流通常用于处理二进制数据,如图像数据流,基本单位为字节,默认不适用缓冲区。
  • 字符流只能用于处理文本数据,基本单元为Unicode(两个字节),使用缓冲区。

文件类File及Java文件读写

  • 类File设置了一个静态成员变量File.separator表示路径分隔符,Windows下为’\’,Unix下为’/’

字节流

  • 获取字节流方法:read()
  • 获取流长度方法:available()
  • 写入字节流方法:write()
  • 强制发送缓冲区数据方法:flush()

字符流

  • 同字节流,字符流基类Writer与Reader也封装了read()与write()方法。

对象序列化

  • 实现了Serializable接口的类的对象可序列化,实现对象的持久化。
  • Serializable接口没有定义任何方法。
  • 将对象流还原为对象的过程,称为反序列化。

第八章.Java网络编程

网络协议

  • TCP/IP连接是一种传输层协议,底层实现了该协议可以进行网络通讯。
  • HTPP是一种应用层协议,应用层协议还有:FTP(文件传输协议),TELNET(远程登录协议)等。

Socket及其工作原理

  • Socket(套接字)是支持TCP/IP协议网络通信的基本操作单元。
  • 运行于客户端的Socket称为Client Socket,运行于服务器端的叫Server Socket,必须有一对套接字才能建立Socket连接。
  • 使用客户端套接字 Socket创建对象时,需要指定服务器主机名称和端口。

第九章.JDBC编程

连接MySQL数据库

  1. 注册数据库驱动程序,建立连接。

    ​ 用java.lang.Class里的静态方法注册MySQL驱动。

    ​ 使用DriverManager.getConnection()创建Connection接口对象。

  2. 根据连接对象,创建数据库操作的代理对象(也称命令对象)。

    ​ 对Conncetion接口类型的对象应用方法createStatement()得到Statement接口类型的对象,应用preparedStatement()得到PrepareStatement接口类型的对象。

  3. 根据命令对象,进行数据库的CRUD操作。

  4. 关闭数据库连接资源。

增删改操作

  • 与查询操作不同,增删改操作不会返回一个结果集ResultSet,而是返回一个整数表示当前操作所影响的记录行数。
  • 方法execute(“SQL语句”)将返回boolean类型,表示操作是否成功。
  • 方法executeUpdate(“SQL语句”)将返回int类型,表示受影响的行数。

查询操作

  • executeQuery(“SQL语句”)将得到ResultSet接口类型的对象(结果集)。
  • 结果集有一个游标,初始位于第一行之前,使用next()方法移动到下一行,没有下一行返回false。

使用预处理封装类

  • 使用Statement类型的命令对象,每次都会重新对SQL语句编译再执行,而PreparedStatement是预编译类型,且允许建立带有占位参数的SQL语句。

QL语句")将返回int类型,表示受影响的行数。

查询操作

  • executeQuery(“SQL语句”)将得到ResultSet接口类型的对象(结果集)。
  • 结果集有一个游标,初始位于第一行之前,使用next()方法移动到下一行,没有下一行返回false。

使用预处理封装类

  • 使用Statement类型的命令对象,每次都会重新对SQL语句编译再执行,而PreparedStatement是预编译类型,且允许建立带有占位参数的SQL语句。

博 --2020.12.2

本文地址:https://blog.csdn.net/PengYuYan__/article/details/110497422

《Java复习笔记(Wust).doc》

下载本文的Word格式文档,以方便收藏与打印。