java随堂记.docx

上传人:b****8 文档编号:28881837 上传时间:2023-07-20 格式:DOCX 页数:11 大小:28.31KB
下载 相关 举报
java随堂记.docx_第1页
第1页 / 共11页
java随堂记.docx_第2页
第2页 / 共11页
java随堂记.docx_第3页
第3页 / 共11页
java随堂记.docx_第4页
第4页 / 共11页
java随堂记.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

java随堂记.docx

《java随堂记.docx》由会员分享,可在线阅读,更多相关《java随堂记.docx(11页珍藏版)》请在冰豆网上搜索。

java随堂记.docx

java随堂记

结构:

整体场景模块

模块:

功能上不可再分的最小单位

数据:

数据是符号,是表示属性和特征的符号

用户:

系统外部,通过与系统交互完成特定要求的实体

I——p——o:

输入,处理,输出

程序:

面向对象

软件生命周期:

1、(OOA面向对象分析)需求分析(找对象):

找问题

2、系统设计(找类):

找类并界定类与类的不同之处,通过静态属性和动态属性(方法),类与类之间的层次关系

is-a是一个(继承extends和实现emplements)

use-a使用一个(依赖和关联)

has-a有一个(组合和聚合)

继承:

继承的is-a的关系表现在两个类之间,而实现这种is-a会表现在一个类与接口之间,但接口与接口之间是继承

依赖:

一个类A使用另一个类B,而这种使用关系具有偶然性、临时性、非常弱、但A会影响B

关联:

两个类或者是类与接口之间的一种强依赖关系,这种关系比依赖关系更强,不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的、平等的,可以使单项、双向的

聚合:

表达整体与部分的可分离的关系

组合:

整体与部分不可分离的关系

编程序要以包为单位,用public修饰的类名要与文件名一样

class前的限定修饰词是public和private,默认是private,private可被本包引用,public可被其他包引用。

闭开原则:

对功能扩展开放,对代码修改关闭

代码需遵循,代码重用原则,系统可维护性原则,功能可扩展原则。

依赖倒转原则:

面向抽象编程,面向接口编程代码的可扩展行,重用性,可维护性

接口方法的默认修饰符是publicabstract

接口成员变量的默认修饰符是finalstatic

构造方法与实例方法的区分:

构造方法是当对象创建时就被调用的方法,构造方法在整个对象生命周期结束之前仅被调用一次的方法。

实例方法是在对象创建之后才能被调用的方法,该方法可以被对象调用多次。

API

对字符串进行封装的类

String定长字符串

StringBuffer变长字符串线程(安全)同步,可保证大量字符串在边界数据处理很精准,速度慢

StringBuilder变长字符串不安全,速度快

每个包都有自己独立的功能,

java.lang:

与java语言和他的系统有关

java.io:

与输入输出有关的

java.util(数据结构包):

对数据进行操作

java.awt:

GUI

javax.swing:

图形用户界面

与网络编程有关(对http传输协议进行封装等)

java.text:

文本格式化包

java.math:

与数学有关的

使用对象的步骤:

实例化对象,向对象发送消息。

system(系统类):

不允许修改,由final修饰,不用实例化对象进行调用

对文本进行描述的类:

character:

对单个文本、字符进行描述

string:

定长字符串

stringbuffer:

线程安全

stringbuilder:

线程不安全

java.lang中对不正常现象的封装:

Throwable(接口)

错误类型:

errors

错误的特征:

编译时没有不正常的现象,程序在运行时运行的结果也是正确的,但是其表现状态是错误的(死循环、内存溢出)

异常类型:

exception

异常的分类:

1、运行期异常:

解释器对其捕获的异常,特征是程序在编译期间没有任何问题,程序在运行期间,如果抛出了运行期异常会导致系统崩溃的现象

ArithmeticException算数异常

ArrayIndexOutOfBoundsException数组下标越界

NopointerException空指针异常

2、检查型异常

对异常进行处理的方式:

1、定义抛出并直接捕获异常

1、try{}定义跟踪并抛出异常

catch(异常类型异常对象){}用来捕获异常并给出应答代码

2、try{}

catch(){异常类型一对象一}

catch(){异常类型二对象二}会产生多种异常,多个catch子句可以由一个exception代替,但是这样不好,因为这样并不能准确的提醒用户哪里出错了

3、try{可能发生的异常代码}

catch(异常类型异常对象){try{}catch(异常类型异常对象){}}在应答代码中有可能出现异常,进行捕捉

4、try{}catch(){}finally{}无论在try语句块中产生还是没有产生异常,程序都会执行finally语句块中的内容,只有在没有执行finally语句块之前,强制性退出jvm,才不会执行finally语句块。

 

finally语句块的作用:

1、跟踪程序的走向,给程序一个统一的出口

2、防止资源的泄漏,实际上就是对内存的管理,垃圾回收器的级别很低,用

gc()唤醒垃圾回收机制,

正确处理异常的好处:

当异常产生时,改变程序执行的方向,避免系统崩溃现象的产生,同时也能提示使用者友好的信息。

缺点:

效率降低,不能将所有的代码放在try里,

java虚拟机(JVM)处理异常的工作原理:

由try语句块定义并跟踪一段代码这段代码当中有可能产生一种或多种异常,一旦这条语句产生了异常就会生成相应的异常对象,该对象会交由系统直接进行处理,系统接收到了异常类型的对象之后,就去寻找与之相匹配catch子句,如果找到了与之相匹配的catch子句就去执行该子句的语句体的内容,如果没有找到与之相匹配的catch子句,java虚拟机会强行的终止try语句块的执行,并导致系统崩溃

2、定义抛出或抛弃异常

定义:

把本方法中生成的异常抛出或抛弃给其他的调用者(在一个方法体内部产生异常时,没有办法或不想对异常进行处理,就把异常抛出或抛弃给其他的调用者)

语法:

throw异常类型的对象;

throws异常类型1,异常类型2;

throw(抛出)与throws(抛弃)的区别:

1、throw写在方法内部,抛出的是异常类型的对象,throws写在方法头部括号后面,而且一个方法有可能会有多种异常,所以throws会抛出多种异常类型(抛出的不是对象),中间用逗号隔开。

3、当一个方法出现异常并且不能解决时,他会抛出异常;当调用者调用抛出异常的方法时他仍不能解决该异常,他会抛弃异常。

4、throw要么和trycatchfinally一起连用,要么和throws一起连用,不能单独使用。

而throws可以单独使用

检查型异常

运行期异常和检查期异常的区别:

1、运行期异常是有解释器捕获的异常

检查型异常是有编译器捕获的异常

2、运行期异常是由java.lang.RuntimeException派生而来的

检查型异常是有lava.lang.Exception派生而来的

3、运行期异常是定义方法或调用方式时不需要声明抛出或捕获的异常

检查型异常是在定义方法或调用方法时必须声明抛出或捕获可能生成的所有异常,否则就会把它传递下去

4、检查型异常是可修复或必须修复的异常(所以必须在程序当中捕获或是由调用者捕获)

运行期异常是无法由程序恢复的异常

定义:

有编译器进行捕获的异常成为检查性异常

 

在main方法当中将异常继续向外抛弃的目的是:

将检查型异常转换成运行期异常,这样在终端调用的时候就允许调用有检查期异常的方法,但不建议这样做,因为问题仍然存在

实例类化对象的四种方式:

new、反射机制、克隆、序列化

克隆:

会抛出检查期异常,要捕获或抛弃它。

需要实现cloneable接口

反射机制:

Classc=Class.forName("Demo");返回demo类型的对象,有c获得

自定义异常:

getmessage获得异常对象的信息

printStackTrace打印异常堆栈信息

正则表达式

使用正则表达式可以方法的对数据进行匹配,还可以执行更加复杂的对字符串进行拆分、验证、替换等功能。

\u4e00—\u9fa5是汉字在unicode字符中的范围

 

抽象的作用:

是为了隔离系统当中有可能出现的变化。

迪米特法则:

不要跟陌生人说话。

陌生人就是彼此独立的模块(类)。

友元类:

根据客户端发送的请求来决定实例化哪一个具体的对象,他能降低耦合度

工厂模式:

是用来实例化对象的

1、简单工厂模式:

抽象产品(接口抽象类):

用来制定所有具体产品实现功能的标准,抽象产品是所有具体产品的标识,抽象产品可以代表所有的具体产品。

具体产品(实体类):

具体产品会按照抽象产品制定的标准来给出代码的具体实现细节,所以具体产品和抽象产品一定是is-a的关系,

工厂类:

根据一定的商业逻辑来创建产品,根据客户端发送的请求来决定实例化哪一个对象

2、工厂方法模式

工厂方法模式的角色:

1、抽象产品

2、具体产品

3、抽象工厂

4、具体工厂

3、抽象工厂模式

方法动态调用支持的形式有两种:

1、自底向上的调用,通过子类的对象调用父类的方法

2、自顶向下的调用,父类的对象调用子类的方法

上塑造型的目标是支持动态绑定,实现自顶向下的方法动态调用过程(父类对象引用子类方法)

上溯造型的特征:

上溯造型之后的对象,在编译期间被绑定为父类的对象,当他去调用属性时会动态的将指针指向父类,当他去引用方法(继承或重构父类而来的方法)时会动态的将指针指向子类,即上溯造型之后的方法引用的方法为子类的方法,从而可以达到自顶向下的方法动态调用过程

依赖倒转原则的优势:

1、代码的可重用性2、遵循闭开原则3、易于维护4、降低了客户端和服务程序之间的耦合度5、实现了封装6、节约内存资源

依赖倒转原则的缺点:

当扩展展品之后,一定要去修改工厂类,违背了闭开原则。

(需要通过配置文件和反射机制来解决)

简单工厂模式使用场景:

同一种类的各种产品进行管理使用

工厂方法模式使用的场景:

对同一种族的不同种类的各种产品进行管理

抽象工厂模式使用场景:

对不同的种族进行管理

 

事件委托模式:

1、自己本身没有办法去实现2、自己在实现的时候效率很低

角色(三要素):

1、事件源:

产生事件的组件

2、事件转发(委托)者:

接受事件源的请求并且由事件转发者来分配具体的事件处理者

3、事件处理者:

实例化事件源为事件源注册事件监听器

重定向:

重新改变输出流的方向

GUI图形用户界面三要素:

1、通过建立和添加组件形成界面屏幕的显示部分

组件:

一段可以重复反复使用的单元代码

2、通过设置布局管理器定义组件的位置

3、事件处理

javax.awt中的组件都是重量级的组件(直接和操作系统进行交互的组件),和操作系统的耦合度过高,有维护与安全的问题,他设计的初衷是为了支持小应用程序的简单应用程序

javax.swing中除了顶层容器之外,都是轻量级的组件。

1、容器组件:

特征:

1、所有的容器组件都可以设置布局管理格式

2、所有的容器组件都可以在此基础之上去添加其他的组件

容器组件的分类:

*顶层容器组件:

在一个图形用户界面中有且至少要有一个顶层容器组件,都是重量级的容器组件

*中间层容器组件:

降低原子组件和顶层容器组件之间的耦合度

常用的顶层容器组件:

1、JFrame:

视窗(实现了一个主窗口)

2、JDialog:

实现一个第二窗口(依赖另一个窗口的窗口)

3、JApplet:

用于java小应用程序,每一个JApplet对象实现一个java小程序的显示区域

常用中间层容器组件:

1、JPanel面板

2、JScrollPane滚动条

3、JToolBar工具栏

2、基本组件(原子组件):

特征:

1、所有的基本组件都是进行人机交互的组件

2、在今本组件的基础之上不能添加其他的组件,也不能在基本组件上设置布局管理

 

1、JFrame

2、Container内容面板

3、JButtonJTextField

步骤:

1、声明组件2、实例化定层容器组件3、获得内容面板getContentPane4、设置布局5、实例化原子组件6、在内容面板中添加组件7、设置窗体大小8、设置窗体可视化

4、JLable提示-文本提示-图片

setForeground(Color fg)是JLabel继承自JComponent类的设置文字颜色的

label.setFont(newFont(“字体”,Font.字体,大小))

GUI的事件委托模式有五个要素:

1、事件源

2、事件

3、事件监听器

4、事件服务程序

5、事件服务方法

GUI的事件委托模式工作原理:

当事件源发生改变时,会生成相应的事件类型的对象,该对象要转发给相应的事件服务程序进行处理,(怎么转交?

为事件源注册事件监听器)事件服务程序就是实现了事件监听接口的类型,而每一个事件服务程序都需要去重构事件监听接口中的所有的事件服务方法(接口中定义的标准即抽象方法),重构事件服务方法的目的是接受来自于事件源的事件对象并给出应答代码

事件的处理步骤:

1、设计静态页面2、设计事件服务程序3、为事件源注册事件监听器,目的是将事件源生成的事件转交给事件服务程序进行处理

布局管理格式:

1、流水布局FlowLayout

2、方位布局BorderLayoutc.add(button,BorderLayout.North)

JPanel(作用:

布局,画板)

3、格子布局GridLayoutc.add(几行,几列)

4、自定义布局/空布局(手工布局)null

f.pack();设置窗体成自动大小

f.setContenpane(newGUIDemo());自己定义中间层容器组件

不建议使用手工布局,每一台pc机的屏幕都不相同,分辨率不相同

c.setLayout(null);手工布局

JButtonb=newJButton();//如果没有这句话,会有空指针异常

b.setBounds(25,25,80,40);将长80宽40的button放在25,25的位置

c.add(b);

 

常用的事件类型:

java.awt.CompenentEvent

ContainerEvent容器事件重量及组件(一般不用)

FocusEvent焦点事件

WindowEvent窗口事件windowlistener/windowadapter

InputEvent输入事件

KeyEvent键盘事件

MouseEvent鼠标事件

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1