赵纾寻  
a special world

本学期面向对象与Java程序设计课程已经全部结束了,但Java程序设计的学习还远未到终点,大家就本学期的课程作一个全面的总结吧。

在此感谢各位助教的全力配合和辛勤劳动,辛苦了!

一、Java面向对象程序:

面向对象编程(基础篇):

1.类与对象。关于类的定义、状态与行为,类与对象的关系,对象的创建与使用。
2.封装性(setter与getter)。
3.构造方法(类名 对象名称 = new 类名称)。
4.匿名对象。
5.this关键字(强调本类中方法,表类属性,使用this调用本类构造方法,this表示当前对象)。
6.static关键字(所有对象共享,类名称直接调用)。
7.String类
①两种实例化方法(例给name赋值zy):直接赋值(String name= "zy");直接调用String类的构造方法(String name=new String("zy"))。
②两种比较内容方法:“==”,“equals()”(将内容进行比较)。
③String类中常用方法(jdk中可查看)。
④注意:字符串就是一个String类的匿名对象;使用String类声明后的字符串内容不可改变。

面向对象(高级篇):

1.继承
①通过子类扩展父类功能(class 父类{} class 子类 extends 父类{})。
②子类不可直接访问父类的私有操作(要通过setter或getter),但可调用父类私有方法。
③子类对象实例化之前先调用父类的构造方法。值得注意的是,父类的构造方法中既有无参构造方法(可系统给,可自己写)又有有参构造方法,我们需要在父类中自己写上一个无参构造,防止调用时this与super并用时报错(super调用无参构造)。
④覆写时,子类只可扩大权限,不可缩小(例父:private,子:public)。
⑤因this与super都需要放在构造方法的首行,故不可同时出现。且均不可用于main方法中。
2.final关键字:
①使用final声明的类不能有子类。
②final声明的方法不能被子类覆写(即不能被继承)。
③final声明的变量即成为常量,常量不可被修改。
3.抽象类
普通类不可有抽象方法,抽象类可以有普通方法及构造方法。
4.多态性
首先进行向上转换,才能进行向下强制类型转换。
5.对象多态性:
两个或多个属于不同类的对象,对于同一个消息(方法调用)做出不同的响应的方式。
6.抽象类(模板):
父类相当于定义了一个模板,在主办法中调用的为普通/构造/抽象方法,子类只需要实现父类的抽象方法。
7.接口(标准):
接口规定出一个标准,对具体的下面的类内容不关心
注意:
①为抽象类与接口实例化:A a=new B()。
②一个类不要去继承已实现好的类,要抽象类与接口二选一。若两者都可以使用,为避免单继承局限,要优先使用接口。
③接口不可使用构造、普通、抽象方法及变量。
④抽象类可实现多个接口,接口不能继承抽象类。
⑤两者都通过对象的多态性产生实例化对象。

异常的捕获及处理:

1.异常:
①异常处理:try{...}catch{...}finally{...}
②throw关键字:用户手工抛出异常类的实例化对象。throws:用于方法声明,表示此方法不处理异常,将异常交给程序被调用处进行处理。
③RuntimeException是Exception的子类,其定义的异常可以选择性进行处理。
④自定义异常只需要继承Exception类进行强制性处理。

二、Java应用程序设计:

多线程:

①定义:一个类继承Thread类,子类中必须明确覆写Thread类中的run()方法。
②不能直接使用run()方法,需要用start()方法启动。

Java IO:

字节流与字符流相关的基本操作

1.字节流(操作byte数据)
①输出数据:OutputStream类
②输入数据:InputStream类
2.字符流
①输出数据:Writer类
②输入数据:Reader类
3.两者区别:字节流在操作时本身不会用到缓冲区,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件
4.操作流程:
①使用File类打开一个文件
②通过字节流或字符流的子类,指定输出的位置
③进行读/写操作
④关闭输入/输出

转换流等以及System类对IO的支持相关内容

1.转换流
①OutputStreamWriter类:Writer的子类,将输出字符流变字节流
②InputStreamReader类:Reader的子类,将输入字节流变字符流
2.内存操作流
①字节内存操作流:内存输入流(ByteArrayInputStream) 内存输出流(ByteArrayOutputStream)
②字符内存操作流:内存输入流(CharArrayReader) 内存输出流(CharArrayWriter)
③ByteArrayInputStream: 程序->InputStream->输出到内存
④ByteArrayOutputStream:程序<-OutputStream<-内存
3.管道流
4.System类
①System.out 即向显示器上输出(希望用户可以看见的信息
②System.err 表示的是错误的标准输出(不希望用户可以看见的信息
③System.in 从键盘中读取数据

图形界面:

1.AWT(重量及组件,抽象窗口工具包)组成:
①组件(Component)②容器(Container)③布局管理器(LayoutManager)

2.Swing(轻量级图形界面组件)组成:
①基本容器JFrame(Component子类):不仅自身有常用操作方法,还可以通过Dimension类和Point类的方法设置组件部分属性。且实例化Frame对象时不需要用异常处理。
②标签组件JLabel:创建完的Label对象可通过Container类中的add()方法加入到容器。进行信息的显示、设置文字显示效果(public void setFont(Font f))或显示图片(使用Icon接口以及ImageIcon子类)。
③按钮组件JButton:表示一个普通的按钮,也可以为一个按钮设置一张显示图片。
④布局管理器(管理组件):
FlowLayout(流式布局管理器):所有组件按照次序依次向下排列;
BorderLayout:将版面划分成东西南北中五个区域;
GridLayout:以表格形式进行管理,必须要设置显示的行数和列数(列数有时不作数);
CardLayout:将一组组件彼此重叠地进行布局,每次只展现一个界面;
绝对定位:通过setBounds()方法,定位一个组件的坐标。其好处是不论窗体如何改变大小,组件位置固定不动。
3.其他容器:
①JPanel:直接加入到JFrame容器中即可显示,完成各种复杂的界面显示。
②JSplitPane:分割面板(水平排列或垂直排列)。
③JTabbedPane:在一个面板上设置多个选项卡供用户选择。
④JScrollPane:为显示的内容加入水平滚动条。
⑤JDesktopPane和JInternalFrame:使一个窗体中出现多个子窗体,每个子窗体无法超出父窗体的区域。
4.事件处理:
①事件:表示一个对象发生状态变化,所有事件类都是EventObject类的子类。
②监听器:事件接受对象,以接口形式出现,处理时只需要实现此接口。
③窗体事件与监听适配器:WindowListener是专门处理窗体事件的监听接口,但直接使用接口需要覆写全部抽象方法不太方便。所以通过WindowAdapter实现监听,就可让用户根据自己的需要进行方法的覆写。
④动作事件及监听处理:使用ActionListener监听,可以使用此事件完成一个简单的用户登录操作。
5.鼠标事件及监听处理:
①使用MouseListener接口,产生MouseEvent事件;
②通过MouseAdapter实现监听。
6.鼠标拖拽事件及监听处理:使用MouseMotionListener接口
7.单选钮:
①使用JRadioButton类完成;
②使用ItemListener接口进行事件监听,存在ItemEvent事件。
8.菜单组件:
①JMenu与JMenuBar:JMenuBar组件用来摆放JMenu组件,可构建一个简单的无菜单项的菜单;
②JMenuItem:相当于一种特殊组件JButton,会触发ActionEvent事件,用于加入菜单项。
③事件处理:JMenuItem与JButton都是AbstractButton类的子类,故事件处理机制完全一样。

Java数据库编程:

JDBC(Java数据库连接)的主要操作及接口:
常用类和接口:DriverManager(用于管理JDBC驱动程序)、Connection(用于建立与特定数据库的连接)、Statement(一个Statement对象用于执行静态SQL语句,并获得语句执行后产生的结果)、Result(用于创建表示SQL语句检索结果的结果集)、PreparedStatement(创建一个可以编译的SQL语句对象,该对象可被多次运行,该接口是Statement的子接口)。

MYSQL数据库:
①定义:小型关系型数据库管理系统。
②安装及配置。
③常用命令:
连接MYSQL数据库:

mysql-u 用户名 -p 密码;

创建数据库:

CREATE DATABASE 数据库名称、

删除数据库:

DROP DATABASE 数据库名称;

使用数据库:

USE 数据库名称;

创建数据库表:

CREATE TABLE 表名称(
    字段名称1 字段类型 [DEFAULT 默认值] [约束],
    字段名称2 字段类型 [DEFAULT 默认值] [约束],
    ...
    字段名称n 字段类型 [DEFAULT 默认值] [约束]
);

删除数据库表:

DROP TABLE  表名称;

查看表结构:

DESC 表名称;

查看数据库信息:
查看全部数据库:

SHOW DATABASES;

查看一个数据库的全部表:

SHOW TABLES;

SQL语法基础:
①SQL功能概括:DML、DDL、DCL;
②MYSQL中的数据类型:常用的是INT、FLOAT、VARCHAR(M)、TEXT、DATE、DATETIME。
③增加数据:

INSERT INTO 表名称[(字段1,字段2,字段3,...,字段n)]VALUES (值1,值2,值3,...值n);

④删除数据:

DELETE FROM 表名称 [删除条件];

⑤更新数据:

UPDATE 表名称 SET 字段 1=值1,...,字段n=值1[WHERE 更新条件];

⑥查询数据:

SELECT{*|column alias}
FROM 表名称 别名
[WHERE condition(s)];  →设置查询条件

JDBC操作步骤:

总结:

没接触java之前,还对上学期的C语言心有余悸,生怕难以适应。后来发现,居然能接受了,真是庆幸。尽管我学到的都只是书本上的皮毛,并没有自己去拓展知识面,这也是比较遗憾的(学渣语录)。很感谢李津老师这学期的“呕心沥血”,让我更对计算机科学充满感叹,原来计算机是这么神奇的东西。
我不像别人的总结都把这学期学到的Java知识写的很专业很全面,我只是很慢的,把自己听到的先一点点消化。希望未来可期吧,不单单是学习方面,还有其他理想。

posted on 2019-12-13 18:20  赵纾寻  阅读(221)  评论(0编辑  收藏  举报