java完美经典读书笔记

更新时间:2023-03-28 13:30:01 阅读量: 生活好文 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

java完美经典读书笔记

java完美经典读书笔记

第一章 概述

第二章 JAVA语言基础 ※关键字:

基本数据类型: byte short int char long float double boolean 循环控制: do while for break continue

分支控制: if else switch case default break

方法 变量 和类得修饰府: private public protected final static abstract synchronized volatile strictfp transient 字面值常量: false true null 方法相关得关键字: return void 包相关得关键字: package import

异常处理: try catch finally throw throws

对象相关: new extends implements super class instanceof this

※很多算术运算操作可以产生浮点型无法表达的数字,如无限大,无限小等,这些数据的表达通过浮点数封装类(Float和Double)所提供的特殊属性来表达。 Float.NaN 非数字

Float.NEGATIVE_INFINITY 无限小 Float.POSITIVE_INFINITY 无限大 Double.NaN 非数字

Double.NEGATIVE_INFINITY 无限小 Double.POSITIVE_INFINITY 无限大

数据类型的自动转换图: char--->{

int-->long-->float-->double byte-->short-->{

※内置类对应的基本类型:

Byte-->byte;Short-->short;Integer-->int;Long-->long;Float-->float;Double-->double

Boolean-->boolean;Character-->char;String-->char[]

※将基本数据类型转为String类型:string str1; int intv1=300; str1=String.valueOf(intv1);

将string类型转为基本数据类型:string str1="126"; int i1=Integer.parseInt(str1);

java完美经典读书笔记

※取得string对象内含的char[]值,必须使用它的toCharArray()方法来取得。 String str3=new String("this is str3"); char[] c1=str3.toCharArray();

System.out.println("c1数组的第一个字符=") + c1[0];

※'\n'换行符 '\r'回车符 '\t'制表符 '\b'返回符 '\f'走纸符 '\''单引号 '\"'双引号 '\\'反斜线符

※负数取模的计算技巧:a%b可以这样计算,首先将a和b都变成正数进行取模 运算,得到的结果添加上和a相同的正负符号即可。例如: -10%-3=10%3=-1; 10%-3=10%3=1;

※switch表达式的值类型,只能是 byte 、char 、short 、int 而不能是long、 float、double、boolean

※java包含两个循环语句break、continue;break使程序可以在特定条件满足时跳出循环 体,而continue则使当次的循环忽略当次循环的后续代码,立即开始下一轮的循环。

※可视域修饰符描述了类、方法或值域对外开放的程度,按开放程度由高到低的顺序是: public -->protected -->默认 -->private

※类的值域和方法前都可以加一个可视域修饰符。对于public成员,外部的任何类都可以访问这个成员;protected的成员可以被同一个包的类及其子类访问;默认的可视域的成员可以被处于同一个包中的类访问;private的成员只能在类内部访问。

※除可视域修饰符外,还可以添加另外两个修饰符,分别是static和final。static称为静态的修饰符,带static的值域表示这个类不管有多少个实例,只会保留一份值域拷贝,即类的多个实例对应同一份变量值,该类的任何一个实例更改了这个值域,该类的其它实例都可以马上看到,所以带static的变量是类级的变量。而带final修饰符的值域表示在第一次赋值后不可改变,这种值域一般用于标识一个常量。

※子类的实例对象可以赋给父类的变量,保存在父类变量中的子类实例可以用 转型将其赋给子类的变量。 super AClass sub BClass AClass a= new BClass(1,2,3); Bclass b=(BClass)a;

※一个类只能有一个父类,但却可以同时实现多个接口。

子类或实现了接口的类可以将其实例传给父类或接口的变量。

java完美经典读书笔记

只实现了父类中部分的虚方法,或只实现接口部分方法的类是虚类,不能进行 实例化。

一个类如果不显示继承一个类,那它就是默认继承http://www.77cn.com.cnng.Object。

接口中的任何值域都是 public static final 类型,接口不允许定义其它类型 的变量。

※static成员变量,它的有效范围可以跨类,甚至可达整个应用程序之内。它除了能在定义它的类内存取,还能直接以“类名.成员变量”的方式在其它的类内使用。它是java程序的“全局变量”。

定义为static的方法有以下几条限制: 1.它只能调用其他的static方法 2.它只能访问static数据

3.它不能以任何方式引用this和super

4.在一个static方法中引用任何实例变量都是非法的。

※super有两种通用形式:1.调用超类的构造函数 2.用来访问被子类的成员隐藏的超类成员

super必须是在子类构造函数中第一个被执行的语句。

动态方法调度:超类的引用变量可以引用子类对象。当一个重载方法通过超类引用被调用,java根据当前被引用对象的类型来决定执行哪个版本的方法。如果引用的对象类型不同,就会调用一个重载方法的不同版本。换句话说,是被引用对象的类型,而不是引用变量的类型。

※final:定义成final的方法不能被重载,定义成final的类不能被继承

第三章 java的数组与对象基础

※两个类型相同的数组GradeA和GradeB可以相互引用,当GradeA引用GradeB数组后,这两个数组的元素值是完全一样的。而当GradeA的元素值改变后,GradeB的元素值也随之改变了,可知GradeA和GradeB数组的实例根本是同一个,而不是复制出另一个实例。

对于一个多维数组,前面维度若未指定索引时,后面维度的索引就不可以先指定。

String 类对象: String c="dfdkfdf";

String c=new String ("dfdkfdf");

int a="wo shi yi ge cheng xu yuan".length();

String s1="wo shi yi ge cheng xu yuan".getClass().getName();

导入一个 StringBuffer 对象 String ( StringBuffer buffer)

StringBuffer buffer1=new StringBuffer ("fish"); String str1=new String(buffer1);

java完美经典读书笔记

方法:

1.取得 String 对象中一些与其内含字符串有关的属性:j02060402

int length() 取得内含字符串的长度。 char charAt(int index) 由此对象内含字符串中,取得index参数指定的索引的那个字符

char[] toCharArray() 将此 String 对象含有的字符串转化为char[]类型的值。

byte[] GetBytes() 将此 String 对象含有的字符串转化为byte[]类型的值。

String[] toString 返回此对象本身的实例(引用地址)

2.从 String 对象内含的字符串中找寻字符或字符串,且找到时回传该目标所在的索引位置 j02060403

int indexOf(int ch)

在此对象内含的字符串(char[]类型)中寻找ch参数指定的字符,找到第一个后就返回他的索引,若找不到则返回-1

int indexOf(int ch,int fromIndex)

与前者同名异式,用fromIndex参数指定由此对象内含的字符串(char[]类型)的某个字符(用索引指定)开始向后找

int indexOf(String str)

同名异式,在此字符串中寻找str参数指定的字符串 int indexOf(String str,int fromIndex)

同名异式,在此字符串中寻找str参数指定的字符串,用fromIndex参数指定由此字符串(char[]类型)的某个字符(用索引指定)开始向后对比字符串 int lastIndexOf(int ch) 在此对象内含的字符串(char[]类型)中寻找ch参数指定的字符,若要找的字符有两个以上,会返回最后一个它的索引值,若找不到则返回-1 int lastIndexOf(int ch,int fromIndex)

与前者同名异式,用fromIndex参数指定欲寻找的范围只到该字符为止 int lastIndexOf(String str) 同名异式,在此字符串中寻找某个字符串

int lastIndexOf(String str,int fromIndex)

同名异式,在此字符串中寻找str参数指定的字符串,用fromIndex参数指定欲寻找的范围只到该字符为止

3.比较或检查该 String 对象的字符串内容:j02060404

boolean startsWith(String prefix)

检查此字符串的开头是否为prefix参数指定的字符串内容 boolean startsWith(String prefix,int toffset)

java完美经典读书笔记

从toffset参数指定的索引开始,往后检查此字符串的开头是否为prefix参数所指的字符串内容

boolean endsWith(String suffix)

检查此字符串的结尾是否为suffix参数所指的字符串内容 int compareTo(String anotherString) 以字符为单位,逐一比较对象的内含字符串与另一个 String 对象内含字符串字符值(编码)的大小,只有遇到一个不同字符,就不往下比较,直接返回。若此对象这方的字符值较大,就返回代表两者之差的正整数,反之,则返回值为负整数;若两个字符串完全相同,就返回0

int compartToIgnoreCase(String str) 与前者相似,不考虑英文的大小写

boolean equals(Object anObject)

与某个对象作比较,若另一个 String 对象和它含有完全相同的字符串,就返回true;反之,返回false。与 Object 和 Integer 等类的equals()不同,参考j02060413 boolean equalsIgnoreCase(String anotherString)

与某个 String 对象作比较,作用与equals()相似,不考虑英文大小写 boolean matches(String regex)

检查内含字符串的样式是否吻合regex参数所指定的规则(正则表达式)。regex参数值的写法看java.util.regex.Pattern

boolean regionMatches(int toffset,String other,int ooffset,int len) 比较内含字符串的某部分内容,是否完全同于other参数导入字符串的某部分内容。toffset参数指定由此对象内含字符串的这个字符开始往后比较,ooffset参数则指定要和other参数的这个字符以后的字符串比较,而且欲比较这部分字符串的长度由len参数指定。

boolean regionMatches(boolean ignoreCse,int toffset,String other,int ooffset,int len) 与前者同名异式,多处的ignoreCase参数用来决定在比较时是否忽略英文字母的大小写差异。若参数为true,就忽略大小写差别;若为false,则得考虑大小写不同。 boolean contentEquals(StringBuffer sb)

比较内含字符串得内容,是否完全同于某个 StringBuffer 对象内得字符串

4.取得 String 对象内含得字符串,经一番处理后,再拿处理后得字符串内容来产生新的 String 对象: j02060405

String concat(String str)

将str参数内含得字符串连接到此对象所含的字符串的尾端,结果类似“+”运算符的作用 String replace(char oldChar,char newChar)

取得内含的字符串,然后将其中某个特定的字符全部替换成另一个字符。由oldChar参数指定要被替换的字符值,newChar参数指定用来取代的新字符值 String replaceAll(String regex,String replacement)

取得内含的字符串,然后将其中符合某种格式的字符串全部替换成另一个字符串。由regex参数指定要被替换掉的字符串的格式,replacement参数则指定要用来取代的新字符串 String replaceFirst(String regex,String replacement)

取得内含的字符串,然后将其中符合某种格式的字符串第一次出现的地方替换成另一个字符串。由regex参数指定要被替换掉的字符串的格式,replacement参数则指定要用来取代的

java完美经典读书笔记

新字符串

String substring(int beginIndex)

取得此字符串中,beginIndex参数所指定索引之后的所有字符,以此产生一个 String 对象。

String substring(int beginIndex,int endIndex)

取得此字符串中,由beginIndex索引值到endIndex索引之前(不包括它)的所有字符,以此产生一个 string对象 String toLowerCase()

取得此对象内含的字符串,将其中的英文字母全转成小写 String toUpperCase()

取得此对象内含的字符串,将其中的英文字母全转成大写 String trim()

取得此对象内含的字符串,将它去掉尾端的空白符 String[] split(String regex) 以regex参数代表的字符串为分界线,将此字符串分为多个字符串,以此产生一个 String[]数组

String[] splet(String regex,int limit)

以regex参数代表的字符串为分界线,将此字符串分为多个字符串,且由limit参数决定最多只将它分为多少个字符串,以此产生一个 String[]数组

5. String 类可以直接使用的static方法,不需构造对象实例就能使用 j02060406

static String copyValue(char[]data)

复制某个char[]数组所含的所有字符,以产生一个字符串(string 对象) static String copyValueOf(char[]data,int offset,int count) 复制某个char[]数组所含的部分字符,以产生一个字符串(string 对象)。由offset参数指定由这个字符开始复制,int参数则指定欲复制字符的数量 static String valueOf(参数)

返回一个内含字符串的意义能代表导入参数的 String 对象。且参数形式有许多种。

StringBuffer 类对象:

不能直接使用“字符串常数”来初始化StringBuffer对象

StringBuffer 对象方法:

1.取得此StringBuffer 对象的一些属性:j02060408

int length() 取得内含字符串的长度 int capacity()

取得目前内部缓冲区容量的大小

void getChars(int srcBegin,int srcEnd,char[]dst,int dstBegin)

取得此对象内含字符串中,由srcBegin索引开始到srcEnd索引之前(不包括此字符)的所

java完美经典读书笔记

有字符,然后复制其值作为dst参数代表的数组在 dstBegin参数索引开始后的元素 char charAt(int index)

由此对象内含字符串中,取得index参数所指定的索引的那个字符 String substring(int start)

取得此 StringBuffer 对象内含字符串,start参数指定的索引开始以后的所有字符,以此产生一个 String 对象

String substring(int start,int end)

取得此 StringBuffer 对象内含字符串,start参数指定的索引开始直到end索引之前(不包括此字符)的所有字符,以此产生一个 String 对象 String toString()

取得此StringBuffer 对象内含字符串,以此产生一个 String 对象 CharSequence subsequence(int start,int end) 取得此 StringBuffer 对象内含字符串中,由start索引开始直到end索引之前(不包括此字符)的所有字符,并以charSequence对象的格式返回。

2.赋值与此 StringBuffer 对象内字符串有关的一些属性 j02060409 void setCharAt(int index,char ch)

设定此StringBuffer 对象内含字符串中某个索引位置上的字符值。index参数指定该字符索引的位置,ch参数决定该字符的值

void setLength(int newLength)

设定此StringBuffer 对象内含字符串的长度。若新的长度比原来小,则后面在范围外的字符会被舍弃;若长度比原来大,则后面会新增字符,而且每个都初始化为特殊字符“\u0000”,其意是“回车换行”

void ensureCapacity(int minimumCapacity)

要求此对象的内部缓冲区目前至少要配置到minimumCapacity参数指定的容量。若目前缓冲区已超过参数指定容量,或参数值小于0,其他并不会因此缩小。

3.直接对 StringBuffer 对象内含的字符串作处理,之后会回传它自己本身的实例(引用地址)

j02060410

StringBuffer append(一个参数) 将导入参数的值转为字符串,然后连接到此 StringBuffer 对象所含之字符串的尾端,和“+”运算符对字符串的处理相似,但此对象本身内含字符串会改变 StringBuffer append(char[]str,int offset,ing len)

从str参数取得字符串连接到此 StringBuffer 对象内含字符串的尾端。而利用offset参数决定从str字符串的这个索引位开始取字符串,且欲取得的字符串长度由len参数指定。 StringBuffer delete(int start,int end)

删除此StringBuffer 对象内含的部分字符串,由start参数指定开始删除第一个字符的索引位置,end参数决定从此字符开始就不删除的索引位置 StringBuffer deleteCharAt(int index)

删除此StringBuffer 对象内含字符串中的一个字符,其索引位置由index参数指定 StringBuffer insert(int offset,char[]str)

将str参数代表的字符串插入到此StringBuffer 对象内含字符串中,而插入的目标索引位

java完美经典读书笔记

置由offset参数决定。

StringBuffer insert(int index,char[]str,int offset,int len)

从str参数取得字符串插入到此StringBuffer 对象内含字符串中。而插入的目标索引位置由offset参数决定,offset参数则决定从str的这个索引位置开始取字符串,且len参数决定欲取得的字符串长度

StringBuffer replace(int start,int end,String str)

将此StringBuffer 对象内的某一部分取代为str参数指定的字符串。而start指定要被取代掉第一个字符的索引位置,end参数则指定由此索引位置开始就不再取代字符,则此字符不会被取代掉。

StringBuffer reverse()

将从StringBuffer 对象内含字符串的排列顺序完全倒转。

4.在StringBuffer 对象内含字符串中寻找某个字符串,然后回传目标所在的索引位置 参考j02060402

int indexOf(String str)

在此对象内含的字符串(char[]类型)中寻找某个字符串。找到第一个符合的字符串后,就返回它第一个字符的索引;若找不到则返回-1

int indexOf(String str,int fromIndex)

同名异式,在此字符串中寻找某个字符串,且由fromIndex参数指定由此字符串(char[]类型)的某字符(用索引指定)开始向后对比字符串,找到第一个符合的字符就返回 int lastIndexOf(String str)

在此对象内含的字符串(char[]类型)中寻找某个字符串。若要找的字符串由两个以上,会返回最后一个它的第一个字符的索引值;若找不到则返回-1 int lastIndexOf(String str,int fromIndex)

同名异式,在此字符串中寻找某个字符串,且由fromIndex参数指定由此字符串(char[]类型)的某字符

(用索引指定)开始向后对比字符串

复制string对象 j02060411 复制stringbuffer对象j02060412

第八章 JAVA的一般类:

类的构造函数:

1.“封住等级”通常是public

2.此“函数名”与“类名”完全相同 3.无返回类型 4.无修饰符

5.构造函数只能配合new来自动调用,而无法让对象使用。

成员的修饰符 abstract

此修饰符只能用在一般“成员函数”,而不能用于成员变量或构造函数,且不能与其他修饰符(封装修饰符除外)同时用于一个成员函数。带此修饰符的成员函数,只会有声明部分,其

java完美经典读书笔记

后只需一个“;”作为结尾,不能有实现部分。在一个类中,只要拥有一个以上有加abstract修饰符的成员函数,就得将其声明为abstract类,且不能以此abstract类的构造函数来产生对象实例。 static

第十章 java的窗体应用程序基础

***** 窗口应用程序通常在窗口内会需要许多组件,通常不直接使用Frame类产生组件,而是要声明一个

继承自 Frame的类,并在里面加入组件作为它的成员,然后再利用该类去产生一个“拥有所需的组件内容 与功能的窗口”。而此类继承自frame组件类,则程序代码结构可以如下: import http://www.77cn.com.cnng.*;

import java.awt.*;使用到AWT组件

//import javax.swing.*;若使用到Swing组件 [封装] class 窗口类名 extends Frame {

组件区:Button、Label等类的对象(变量)==>类成员 public 窗口类名 (){

决定何种版面布局方式==》窗口框架的setLayout()方法 构造各组件的对象实例==》使用组件的构造函数

设定各组件的属性:外观位置==》各组件setBounds()方法 设定各组件所对应的事件监听机制(搭配Inner Class) 将各组件加入此窗口框架中==》此窗口框架的add()方法

设定此窗口框架的属性:外观位置等等==》setBounds()等方法 设定此窗口框架对应的事件监听机制(搭配Inner Class) 显示此窗口==》使用show()、setVisible()方法 }

public static void main(String args[]){ 窗口类名 窗口对象=new 窗口类的构造函数; //也可在其它类内建立此种窗口对象 操作窗口框架==》窗口对象.方法

操作窗口内的组件==》窗口对象.组件.方法 }

Inner class (自定的事件类)==>类的类型成员 }

倘若此类要继承JFrame组件类,则可按下面的程序代码架构来声明我们的窗口框架类:

import http://www.77cn.com.cnng.*;

//import java.awt.*;若使用到AWT组件 import javax.swing.*;使用到Swing组件 [封装] class 窗口类名 extends JFrame {

组件区:JButton、JLabel等类的对象(变量)==>类成员 public 窗口类名 (){

java完美经典读书笔记

决定何种版面布局方式==》ContentPane的setLayout()方法 构造各组件的对象实例==》使用组件的构造函数

将各组件加入ContentPane中==》使用此ContentPane的add()方法 设定此ContentPane的属性:背景颜色等等==》setBounds()等方法 设定此窗口框架的属性:外观位置等等==》setBounds()等方法 设定此窗口框架对应的事件监听机制(搭配Inner Class) 显示此窗口==》使用show()、setVisible()方法 }

public static void main(String args[]){ 窗口类名 窗口对象=new 窗口类的构造函数; //也可在其它类内建立此种窗口对象 操作窗口框架==》窗口对象.方法

操作窗口内的组件==》窗口对象.组件.方法 }

Inner class (自定的事件类)==>类的类型成员 }

第十一章 窗口程序的事件机制 //Shijian.java

*****建立GUI事件的做法,主要有两种方式:一.一般标准做法--implements XXXListener

1.加入所需的监听能力 首先为组件注册一个负责处理某方面事件的listener对象(事件监听者),也

就是使组件具备监听某一类事件的能力,方式如下:组件.addXXXListener(XXXListener对象)

2.自定义一个实现XXXListener接口的类(class) 在上一步中需要导入一个XXXListener对象,但java提供的XXXListener接口类,无法直接用来产生对象实例,因此我们得要自定一个继承该接口的一般类。既然是继承接口类,那么就要实现该接口的所有方法。

假设要制定鼠标按键单击该组件时执行的动作,那么就要override它的mouseClickd(MouseEvent e)事件函数

3.产生Listener对象实例

Button1.addMouseListener(new Button1MouseListener());

二.继承Adapter类的作法--extends XXXAdapter 若 XXXAdapter接口中的事件函数有两个以上,java就会提供一个对应它的XXXAdapter类(即:适配器类)给我们,它是一个已经 implements XXXListener的类。此种作法的实现步骤如下:

1.加入所需的监听能力

组件.addXXXListener(给XXXAdapter对象);

2.自定义一个继承XXXAdapter的类:extends XXXAdapter

由于XXXAdapter类是标准的一般类,所以继承此类之后,我们只要override所需要的事件

java完美经典读书笔记

函数即可。

3.产生Listener对象实例

*****AWT事件类

awt的事件类的继承关系图:

http://www.77cn.com.cnng.Object |

java.EventObject | |

java.AWTEvent java.beans.PropertyChangeEvent |

java.awt.event. java.awt.event. java.awt.event. java.awt.event. java.awt.event.

ComponentEvent TextEvent ItemEvent ActionEvent AdjustmentEvent |

FocusEvent InputEvent ContainerEvent WindowEvent PaintEvent |

KeyEvent MouseEvent |6.5

MouseWheelEvent

EventObject 类--所有事件类的始祖

它提供了一个getSource()方法,让我们知道事件源发生自哪个组件。 public Object getSource()

AWTEvent 类--它是继承自EventObject的一个abstract类,它是所有AWT事件的父类。

*****Frame组件拥有的监听能力与常用的Listener接口

一.由Component类继承来的监听能力

Component 类定义的 addXXXListener()方法 void addComponentListener(ComponentListener l) void addFocusListener(FocusListener l)

void addHierarchyBoundsListener(HierarchyBoundsListener l) void addHierarchyListener(HierarchyListener l) void addInputMethodListener(InputMethodListener l) void addKeyListener(KeyListener l) void addMouseListener(MouseListener l)

void addMouseMotionListener(MouseMotionListener l) void addMouseWheelListener(MouseWheelListener l) 这些“监听者”的Listener接口: 所有事件的返回类型皆为void

http://www.77cn.com.cnponentListener 接口

java完美经典读书笔记

此接口拥有的事件函数如下:

事件函数 触发时机

componentHidden(ComponentEvent e) 组件从屏幕上隐藏起来,例如使用 setVisible(false)方法,或使用旧版hide()方法

componentShown(ComponentEvent e) 组件由隐藏改为显示到屏幕上,例如使用 setVisible(false)方法,或使用旧版show()方法

componentMoved(ComponentEvent e) 组件在容器内位置变动时,若是独立浮动的Frame 组件,其容器可视为屏幕(screen)

componentResized(ComponentEvent e) 组件的外观大小改变时

2.FocusListener 接口

事件函数 触发时机

focusGained(FocusEvent e) 键盘焦点由另一个组件进入此组件时

focusLost(FocusEvent e) 键盘焦点由此组件进入另一个组件时

注:如果组件本身是一个容器,而其内又容纳了能接受键盘输入焦点的组件,那么FocusListener所处理的FocusEvent事件,会发生在其内所包含

的组件上。因此,对于象Frame这样的窗口,若要针对它是否接受Focus作控制,一般会使用WindowFocusListener来实现。

3.KeyListener 接口

事件函数 触发时机 keyPressed(KeyEvent e) 当键盘焦点在此组件内,将键盘的任何一个按键 按下(在放开或其他按键被按前,会不断侦测到 KeyPressed事件,则按下到放开为止,可能有多 次KeyPressed发生)

keyRelease(KeyEvent e) 当键盘焦点在此组件内,将键盘的任何一个被按 下的按键放开弹起

keyTyped(KeyEvent e) 当键盘焦点在此组件内,将键盘的任何一个文字 输入(包括空格)键按下,亦即每用键盘打一个 字。或按下Esc、Enter特殊功能键时,也会触发

java完美经典读书笔记

此事件。例如:在一个文本框内输入一个“Y”字 符,总共会触发keyPressed、keyRelease、 keyTyped三个事件。若按下F1键再放开,就只会 触发keyPressed、keyRelease

4.MouseListener 接口

事件函数 触发时机

mousePressed(MouseEvent e) 在此组件内按下鼠标按键(到放开为止,算一次 mousePressed)

mouseClicked(MouseEvent e) 相当经历一回mousePressed+mouseReleased。可 侦测的鼠标点击状况,包括按一下和连按多下

mouseReleased(MouseEvent e) 在此组件内将鼠标按键放开

mouseEntered(MouseEvent e) 鼠标光标移入此组件内

mouseExited(MouseEvent e) 鼠标光标由此组件移出

5.MouseMotionListener 接口

事件函数 触发时机

mouseMoved(MouseEvent e) 鼠标在此组件内移动

mouseDragged(MouseEvent e) 鼠标在此组件内进行拖拽并放开的动作

6.MouseWheelListener 接口

事件函数 触发时机

mouseWheelMoved(MouseWheelEvent e) 鼠标滚轮在此组件内滚动

二.Frame由Container类继承来的监听能力

Container 类定义的addXXXListener()方法

void addContainerListener(ContainerListener l)

void addPropertyChangeListener(PropertyChangeListener l) void addPropertyChangeListener(String propertyName,PropertyChangeListener

java完美经典读书笔记

listener)

1.ContainerListener 接口

事件函数 触发时机

componentAdded(ContainerEvent e) 有一个组件移入此Container组件中

componentRemoved(ContainerEvent e) 有一个组件由此Container组件中移出

注:因Container的子类Window,覆盖了由Container继承的两个addPropertyChangeListener()方法,而Frame组件又继承自Window类,所以Frame组件使用的是Window类定义的addPropertyChangeListener()方法。

三.有Window类继承而来的监听能力

Window 类定义的addXXXlistener()方法

void addPropertyChangeListener(PropertyChangeListener listener) void addPropertyChangeListener(String propertyName,PropertyChangeListener listener)

void addWindowFocusListener(WindowFocusListener l) void addWindowListener(WindowListener l)

void addWindowStateListener(WindowStateListener l)

1.WindowFocusListener 接口:

事件函数 触发时机

windowGainedFocus(WindowEvent e) 当此Window组件取得程序焦点

windowLostFocus(WindowEvent e) 当此Window组件失去程序焦点

2.WindowListener 接口:

事件函数 触发时机

windowActivated(WindowEvent e) 当此Window组件现在设定为活动中的窗口

windowDeactivated(WindowEvent e) 当此Window组件现在要由活动中的窗口改成非 活动中的窗口

java完美经典读书笔记

windowClosed(WindowEvent e) 当系统确实要处理掉(dispose)此Window组 件,而要关闭此窗口时

windowClosing(WindowEvent e) 用户通过窗口窗体企图关闭此Window组件时

windowDeiconified(WindowEvent e) 此Window组件由最小化的状态变成一般正常大 小时

windowIconified(WindowEvent e) 此Window组件由一般正常大小变成最小化的状 态

windowOpened(WindowEvent e) 此Window组件第一次被设定为visible的时候

3.WindowStateListener 接口:

事件函数 触发时机

windowStateChanged(WindowEvent e) 此Window组件的状态改变时

四.其他组件拥有的监听能力和常用的Listener接口

1.Button 组件拥有的监听能力

Button 类定义了一个注册事件监听者的方法,如下:

public void addActionListener(ActionListener l)

实现此“事件监听者”的Listener 接口如下:

ActionListener 接口:

此接口只拥有一个事件方法,因此没有一个与它对应的Adapter类

事件函数 触发时机

actionPerformed(ActionEvent e) 当ActionEvent对象产生时

2.TextComponent 组件拥有的监听能力

TextComponent 类定义了一个注册事件监听者的方法,如下:

java完美经典读书笔记

public void addTextListener(TextListener l)

实现此“事件监听者”的Listener 接口如下:

TextListener 接口:

此接口只拥有一个事件方法,因此没有一个与它对应的Adapter类

事件函数 触发时机

textValueChanged(TextListener l) 当此组件的text值改变时

3.List 组件拥有的监听能力

List 类定义了两个注册事件监听者的方法,如下:

List 类定义的addXXXListener()方法

public void addActionListener(ActionListener l) public void addItemListener(ItemListener l)

ItemListener 接口

此接口只拥有一个事件方法,因此没有一个与它对应的Adapter类

事件函数 触发时机

itemStateChanged(ItemEvent e) 当此组件的一个选项被用户“选取”或“反选”的 时候

4.Scrollbar 组件拥有的监听能力

Scrollbar 类定义了一个注册事件监听者的方法,如下:

public void addAdjustmentListener(AdjustmentListener l)

AdjustmentListener 接口:

此接口只拥有一个事件方法,因此没有一个与它对应的Adapter类

事件函数 触发时机

adjustmentValueChanged(AdjustmentEvent e) 当此组件某个可调整的值被改变

java完美经典读书笔记

的时候

第十三章、I/O处理

*****java内置流类(stream classes)根据它所操作的数据单位的类型分为两大类:一类是以字符(char)为单位的“字符流”(character streams),另一类是以字节为单位的“字节流”(byte streams)。它们负责输入和输出的基本代表分别是Reader和Writer类,以及InputStream和OutPutStream

1.字符流 Reader和Writer |-CharArrayReader |-StringReader

|-InputStreamReader---FileReader Reader|-PipedReader

|-BufferedReader---LineNumberReader |-FilterReader ---PushbackReader

|-CharArrayWriter |-StringWriter

|-OutputStreamWriter---FileWriter Writer |-PipedWriter |-BufferedWriter |-FilterWriter |-PrintWriter

以上字符流类主要可以分为两大类,其中一类是负责不同数据存放方式的流类,如:CharArray、String、Pipe、File;另一类是对数据作额外处理的类,如:Buffered、Filter

2.字节流 InputStream和OutPutStream

一般用来读入和写出二进制数据,例如图象、声音。像字符流无法正常处理的可执行文件、压缩文件等,只要是“非纯文本”的数据,就要以此种流来处理。

|---ByteArrayInputStream |---FileInputStream

|---StringBufferedInputStream

java完美经典读书笔记

|---PipedInputStream |--BufferedInputStream InputStream |---FilterInputStream----------------|--LineNumberInputStream |---SequenceInputStream |--PushbackInputStream |---ObjectInputStream |--DataInputStream

|---ByteArrayOutputStream |---FileOutputStream

|---PipedOutputStream |--BufferedOutputStream OutputStream |---FilterOutputStream---------------|--DataOutputStream |---ObjectOutputStream |--PrintStream

以上字符流类主要可以分为两大类,其中一类是负责不同数据存放方式的流类,如:ByteArray、File、StringBuffer、Pipe;另一类是对数据作额外处理的类,如:Buffered、Filter

Buffered这一类得配合前一类的类使用,因此java提供的流类主要可分为:

无Buffer缓冲 有Buffer缓冲

以char为单位 Reader(及其子类) BufferedReader(配合 Reader 及其子类使用 )

Writer(及其子类) BufferedWriter(配合 Writer 及其子类使用 )

以byte为单位 InputStream(及其子类) BufferedInputStream(配合 InputStream 及其子 类使用 )

OutputStream(及其子类) BufferedOutputStream(配合 OutputStream及其

子类使用)

*****InputStream 类---以File存储类型介绍 j02130201

InputStream 定义的方法:

返回 方法 说明

int available()throws IOException 返回目前可由此输入流读入的byte数据的数量。 子类需要覆盖此方法,否则返回值都会是0

java完美经典读书笔记

abstract int read()throws IOException 由此输入流读取下一个byte数据作为返回值,但 返回的byte值会以int类型的值展现,其值介于0 -255 之间,若已达流结尾,则返回-1。

int read(byte[]b)throws IOException 由输入流读取一些byte数据,并存放在参数代表 的数组中。然后将读取的byte数据的数量以int 值返回,若已达流结尾,则返回-1。

int read(byte[],int off,int len) 由输入流读取一些byte数据,并存放在参数代表

throws IOException 的数组的某段位置。然后将读取的byte数据的数 量以int值返回,若已达流结尾,则返回-1。

void reset() 将流内的位置移到上次以mark()方法标记的位置 。要看该流是否支持mark()和reset(),而 InputStream 的 mark()无实际作用,所以总是 抛出 IOException。

void mark(int readlimit) 标记目前于此输入流内的位置,直到再读入 readlimit个byte为止,这个标记都维持有效。 之后若使用reset()方法,会尝试移到所标记的 位置。但InputStream 的 mark()无实际作用

boolean markSupported() 测试此流是否支持mark()和reset()方法。只要 其中一个不支持,则返回false。

long skip(long n)throws IOException 跳过几个byte数据,并返回跳过的数量。跳过多 少字符由参数指定

void close()throws IOException 关闭此输入流,并释放任何与之关联的系统资源 。但 InputStream 的close()尚无实际作用。

*****OutputStream 类---以File存储类型介绍 j02130202

OutputStream定义的方法:

本文来源:https://www.bwwdw.com/article/603n.html

Top