第一部分: 基础知识
第二部分: 面向对象
1.封装类
对一类事物抽象所得到的一个概念
对象
一个具体的食物
构造函数
(1)不能有返回值
(2)方法名与类名相同
(3)可以有多个
(4)默认生成无无参数无方法体无返回值的构造函数
自己一旦定义,编译器将不再生成默认的构造函数
生成一个类对象是能且只能调用其中的一个构造函数
static
凡是static修饰的成员都是静态成员
静态成员都是属于类的
非静态的可以访问静态的,静态的不可以访问非静态的.
通过类名只能访问一个类中的非私有静态成员.
私有静态成员也不可以通过对象名访问
this
非静态方法默认都含有一个this指针
this代表正在调用本方法的对象
final
修饰类 该类不能被继承
修饰方法 该方法可以被继承但不能被重写
修饰属性 表示该属性能且只能被赋一次值,
赋值方式只有两种:
1.定义的同时显示初始化
2.构造函数中初始化
函数重载:
同名不同参
返回值不能作为是否构成函数重载的依据
2.继承
定义
子类继承了父类的成员
注意问题:
非私有成员才可以被子类继承
重写:
重写方法比粗和被重写方法具有方法名称,参数列表,返回值类型
重写方法的访问权限不能小于被重写方法
3.多态
定义:
同一代码可以随上下文的不同而执行不同的操作
一个父类的引用既可以指向父类对象也可以指向子类对象,可以根据当前时刻指向的
不同自动调用不同对象的方法
注意:
通过父类的引用只能访问子类从父类继承过来的成员
只有在父类的引用本身指向的就是一个子类对象时,
我们才可以把父类的引用强制转换为子类的引用
相关知识:
抽象类
一个抽象类通常都含有抽象方法
只重写了抽象类部分抽象方法的类也必须的被标记为abstract
不可以定义抽象类对象,但是抽象类可以实现多态
接口
接口中的方法都是public abstract
不可以定义接口对象,但接口却可以实现多态
重写接口方法时public不能省
举例:
线程的创建
事件的处理
容器的组织方式
serializable接口
第三部分: 高级部分
1. 异常
定义:
运行时的错误
分类
无法处理的错误
可以处理的异常:
必须处理的异常
是Exception子类担不是RuntimeException 的子类
可处理可不处理的异常
RuntimeException 的子类
注意问题:
finally{...}一定会执行
先捕获子类异常,再捕获父类异常,顺序不能颠倒
重写方法的抛出异常的访问不能大于被重写方法抛出异常的范围
假设f方法跑出了A异常,则f方法有两种方式处理A异常:
1.throws A
2.try{...}catch(){...}
2.线程:
定义:
一个程序运行时的不同执行路径
创建线程的方式:
继承Thread类
实现Runnable接口
线程的同步
多个线程操作同一个资源,并且要求这些操作中的若干个操作不能被中断
线程同步是通过synchronized来实现
synchronized可以修饰两种:
代码块
方法(默认锁定的是this)
线程的通信
有时多个线程只有彼此相互协作才可以完成某个工作
实现方式:
wait和notify() notifyall()
实例:生产消费
3. 包
包的生成与运行:
package语句必须是第一条语句
类名是包名和类名的组合
只有在整个包的最上层目录才可以运行
同包:
不同包的相互访问:
jar包的生成与jar包的使用
普通jar包的生成
jar -cvf 要生成的jar包的名字.jar *
可运行jar包的生成:
jar cvfm 要生成的jar包的名字 .jar 1.txt *
4.GUI
容器和组件的关系:
容器时组件但组件不一定是容器
常见的布局管理器:
BorderLayout --Frame
FlowLayout--Panel
GridLayout
事件模型:
明白哪些操作时编译器自动完成的,哪些操作是程序员手动完成的
程序员只需要做两件事:
告诉事件源可以产生哪些事件
设计好可以处理这些事件的事件监听器
内部类:
在一个类内部定义的类
内部类的方法可以访问外部类的所有成员
外部类的方法不可以直接访问内部类的任何成员
一定要明白产生内部类的原因:
如果一个类A要使用B类的所有成员
B以外的其他类访问,则我们可以把A定义成B的内部类
因此几乎不存在直接生成内部类对象的问题
因此几乎不存在外部类需要访问内部类成员的问题
匿名类:
匿名类是内部类的一种极端表现形式
匿名类可以访问外部类的成员和包裹本匿名类方法中的final类的
5.io流
定义:
如果一个类是用来完成程序和设备间的数据传输,则这个类有个特殊的称谓 流
流一定是类,类不一定是流
分类
输入流 输出流
字节流 字符流
原始流 包裹流
常用流介绍:
四大基本流
Inputstream OutputStream
Reader Writer
字节流和字符流的区别:
字节流可以处理所有格式的文件
字符流只能处理文本格式的文件
文件流
FileInputStream FileOutputStream
FileReader FileWriter
缓冲流
BufferedInputStream BufferedOutputStream
BufferedReader BufferedWriter
缓冲流可以提高数据的传输速度
转化流
OutputStreamWriter InputStreamReader
例子:
编程实现把用户从键盘输入的字符保存到一个String对象中
数据流
DataInputStream DtatOutputStream
数据流可以把基本类型数据的二进制直接写入或读入
例子:
编程实现将long类型的数据写byte数组中
然后再从byte数组中把数据读出类
Print流
PrintStream PrintWriter
Print流可以把基本类型数据格式化后的字符串输出
例子:
编程实现吧键盘输入的数据写入A文件,如果输入有误
则把出错信息写入B文件
Object流
ObjectInputStream ObjectOutputStream
可以把一个对性直接写入读出
6.容器:
定义:如果一个类是专门用来存放其他类对象的,则这个有另外一个特殊的词叫做 容器
容器和类的关系:
容器一定是类,但类不一定是容器
Collection接口:
set 接口
无序,不允许重复
实现类:
TreeSet HashSet
list接口
有序,允许重复
实现类:
ArrayList LinkedList
Map接口:
即保存数据本身,也数据的主键的一种接口
实现类:
HashMap TreeMap
hashCode() 和equals()方法
Collections类
该类提供了对Collection接口显示类的排序,倒置,查找等功能
Comparable接口
通过该接口的方法可以制定出对性之间比较的标准
凡是需要进行对象的比较排序的场合均可以考虑实现该接口
Iterator 接口
利用该接口中的方法可以遍历元素
好像还有网络编程没有写?难道不属于j2se里的?