15/16学年第二学期
《Java课程总结》
班级: 1420561
学号: 13
姓名: 方一帆
第1章Java系统环境概述
一.Java语言特点
1.简单性
Java语言简单而高效;
Java的简单性是以增加运行时系统的复杂性为代价的。
2.面向对象
程序=对象+消息
面型对象语言基本特征:
①万物皆对象;
②程序是对象的集合;
③每个对象都有自己的由其他对象所构成的存储;
④每个对象都拥有其他类型;
⑤某个特定类型的所有对象都可以接收同样的消息。
3.可移植性(平台无关性)
程序不经修改就能在不同硬件或软件平台上运行
4.高能性
①高效的字节码;
②多线程;
③及时编译和嵌入C代码
5.分布式
包括数据分布和操作分布
6.动态特性
动态链接机制,将OO特点延伸到系统的运行阶段
7.健壮性和安全性
①Java语言本身的安全性设计;
②编译检查;
③运行检查;
④网络接口级的安全检查。
2.Java运行环境(了解)及程序的运行步骤
1.运行环境
JDK,编写Java Applet和应用程序的开发环境
2.运行步骤
JVM,Java虚拟机是可以运行Java字节码的假象计算机
Java Application程序的建立和运行步骤:
①在NetBeans IDE中创建一个项目;
②建立Java源程序文件;
③解释器解释字节码文件。
三.Application与Applet的区别
类别 不同点 | Java Application | Java Applet |
运行方式 | 可以独立运行 | 不能单独运行 |
运行工具 | 普通的Java解释器 | 浏览器或Applet观察器 |
程序结构 | 有且只有一个main方法 | 没有main方法 |
受到的限制 | 可以实现各种操作 | 不能写操作 |
第2章 Java语言基础
第3章 结构控制
一.Java标识符的规定
1.标识符由大小写字母, 下划线, 数字, $符号组成.
2.开头可以是大小写字母, 下划线, 和$符号.(数字不能开头)
3.标识符长度没有限制
4.标识符不能是关键子和保留字
5.标识符的命名最好能反映出其作用
6.java语言对字母的大小写有严格的要求.
7.所有自定义标识符需全部遵循标识符的命名规范.
变量:
①如果是一个单词,单词字母全部小写
②如果由多个单词组成,除第一个单词外,其后所有单词首字母大写
常量:
常量所有单词字母大写, 如果是由多个单词组成, 由下划线连接.
方法:
方法命名规范与变量相似
类:
类名的所有单词首字母均大写.
包:
用小写的倒置域名来命名. 格式: 前缀 + 项目名 + 模块名 + 层
2.Java的数据类型
Java基本类型共有八种,基本类型可以分为三类:字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double
1.常量
①整数型常量(4字节):十进制整数、八进制整数、十六进制整数
②浮点型常量:小数点形式、指数形式
存储方式:单精度(4字节)、双精度(8字节)
③布尔型常量:true、false
④字符型常量:单引号括起的单个字符、单引号括起来的转义字符、单引号 括起来的八进制转义序列
⑤字符串常量:双引号括起来的0个或多个字符串序列
2.变量
①整数型变量:byte(1字节)、short(2字节)、int(4字节)、long(8 字节)
②浮点型变量:float(4字节)、double(8字节)
③字符型变量:char(2字节)
④布尔型变量:boolean
3.强制类型转换
①隐式类型转换
②显示类型转换
3.分支及循环语句,break,continue
1.分支选择语句
if:
基本形式: if(布尔表达式)
语句区块1
else
语句区块2
嵌套:if(布尔表达式1)语句区块1
else if(布尔表达式2)语句区块2
else if(布尔表达式3)语句区块3
.
.
else 语句区块n+1
注意事项:①else和if配对
②语句区块有多个语句时要用{ }
switch:
基本形式: switch()
{case 值1:语句区块1:break;//分支1
case 值2:语句区块2:break;//分支2
.
.
case 值n:语句区块n:break;//分支n
[default: 语句区块n+1;] //分支n+1
}
说明:①switch后表达式类型不允许是浮点数类型和long类型
②case后面的值是与表达式类型相同的常量,值各不相同
③default语句可省去
④当表达式的值与某个case后常量值相等时,就执行后面的语句
⑤去掉brake,执行完第一个匹配的case后仍会执行其余语句
2.循环语句
While:
基本形式:While ( 条件 )
{
//循环体
}
说明:
(1)此语句是先判断条件,再确定是否执行语句或程序块。
(2)条件为true时,执行循环体的语句或程序块。反之,不执行循环体。
(3)在循环体中要有改变条件的语句,否则会成为死循环。
do-while:
基本形式:do{
//循环体;
} while (条件) ;
说明:
(1)此语句是先执行一次循环体,再判断条件。
(2)条件为true时,再次执行 循环体的语句或程序块。
(3)在循环体中要有改变条件的语句,否则会成为死循环。
(4)do-while循环语句即是至少都要执行一次的。
For:
基本形式:for (设定初始值 ; 条件限定 ; 修改控制变量)
{
//程序代码;
}
3.break,continue
break语句用于终止某个语句块或循环体的执行
continue语句用于跳过某个循环语句块的一次执行
第4章 类与对象
第5章 消息、继承与多态
1.熟悉类、对象的创建方法
对象是实际存在的一类事物的每个个体,也称实例。对象具有以下特征
(1) 对象标识:即对象的名字,是用户和系统识别它的唯一标志,可以把对象看成计算机存储器中一块可标识的区域。
(2) 属性:即一组数据,用来描述对象的静态特征。“数据成员”
(3) 方法:也称为服务或操作,它是对象动态特征(行为)的描述。“成员方法”
类是对某类事物的描述,是抽象的、概念上的定义。包括:
(1) 类标识:类的一个有别于其他类的名字。这是必不可少的。
(2) 属性说明:用来描述相同对象的静态特征。
(3) 方法说明:用来描述相同对象的动态特征。
[修饰符] class 类名 [extends 父类][implements 接口名]
{
类成员变量声明
类方法声明
}
2.构造函数、成员方法、封装等概念
构造函数:
(1)构造方法的方法名与类名相同。
(2)构造方法是类的方法,能简化对象数据成员的初始化操作
(3)不能对构造方法指定类型,它有隐含的返回值,该值由系统内部使用。如果标明返回值则不再是构造函数。
(4)构造方法一般不能由编程人员显式地直接调用,在创建一个类的对象的同时,系统会自动调用该类的构造方法将新对象初始化。系统正是因为构造方法与类方法名相同,从而找到构造方法的。但是一旦用户定义了构造函数,系统就不再构建了。
(5) 构造方法可以重载,即可定义多个具有不同参数的构造方法。编译器可以根据这一点判断出用new关键字产生对象时,该调用哪个构造方法。产生对象的格式是:new 类名(参数列表) 其构造过程在下页。
(6) 构造方法可以继承,即子类可以继承父类的构造方法。
(7) 如果用户在一个自定义类中未定义该类的构造方法,系统将为这个类定义一个缺省的空构造方法。这个空构造方法没有形式参数,也没有任何具体语句,不能完成任何操作。
成员方法:
成员方法描述对象所具有的功能或操作,反映对象的行为,是具有某种相对独立功能的程序模块。它与过去所说的子程序、函数等概念相当。一个类或对象可以有多个成员方法,对象通过执行它的成员方法对传来的消息作出响应,完成特定的功能。
封装:
封装:也称为信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。
3.访问控制符:public、private、protected
Public:
如果一个类的修饰符是public,则这个类是公共类。公共类不但可供它所在包中的其他类使用,也可供其他包中的类使用。在程序中可以用import语句引用其他包中的public类。Java规定,在一个程序文件中,只能定义一个public类,其余的类可以是无修饰符的类,也可以是用final修饰符定义的最终类,否则编译时会报错。
Private:
用private修饰的数据成员或成员方法只能被该类自身所访问和修改,而不能被任何其他类(包括该类的子类)来访问和引用。它提供了最高的保护级别。当其他类希望获取或修改私有成员时,需要借助于类的方法来实现。
Protected:
用protected修饰的成员变量可以被三种类引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类。使用protected修饰符的主要作用是允许其他包中的它的子类来访问父类的特定属性。
4.多态机制:覆盖、重载
覆盖:
含义:
由于面向对象系统中的继承机制,子类可以继承父类的方法。但是,子类的某些特征可能与从父类中继承来的特征有所不同,为了体现子类的这种个性,Java在子类中定义与父类中已定义的相同名而内容不同的方法叫做覆盖(overload)。覆盖也叫重写
注意事项:
子类可以根据需要对从基类中继承的方法进行重写
重写的方法必须和被重写的方法具有形同的名称、参数列表和返回类型,否则就不是方法的覆盖,而是子类定义自己特有的方法,与父类的方法无关。
重写方法不能使用比被重写方法更严格的访问权限。
覆盖是基于继承的,如果不能继承一个方法,则不能构成重写,不必遵循覆盖原则。
重载:
含义:
在同一类中定义了多个同名而不同内容的成员方法时,我们称这些方法是重载(override)的方法。
原则:
重载的方法主要通过形式参数列表中参数的个数、参数的数据类型和参数的顺序等方面的不同来区分。
重载方法的返回值类型、访问权限没有特别要求,可以相同也可以不同。
调用时,根据不同的参数列表来调用。
第6章 数组
第7章 字符串类
一、一维数组的定义、初始化及引用
定义:
类型标识符 数组名[ ];
类型标识符[ ] 数组名;
初始化:
直接指定初值的方式
用关键字new初始化数组
引用:
arrayName[index]
1.数组间相互赋值
2.向成员方法传递数组元素
3.向成员方法传递数组
4.对象数组
2、二维数组的定义、初始化及引用
定义:
类型说明符 数组名[ ][ ];或
类型说明符[ ][ ] 数组名;
初始化:
用new操作符初始化数组
直接指定初值的方式
引用:
1.测定数组的长度及数组赋值
“数组名.length”为测定的是数组的行数
“数组名[i].length”表示第i行的 列数
数组名作为成员方法的参数
3、String类与StringBuffer类的区别
1.String类(字符串类)的对象是一经创建便不能变动内容的字符串常量,创建String类的对象可以使用直接赋值和利用String类的构造方法。
2.StringBuffer类(字符串缓冲器类)也是java.lang.Object的子类。与String类不同,StringBuffer类是一个在操作中可以更改其内容的字符串类,即一旦创建了StringBuffer类的对象,那么在操作中便可以更改和变动字符串的内容。也就是说,对于StringBuffer类的对象,不仅能进行查找和比较等操作,还可以进行添加、插入、修改之类的操作。
第8 章 集合类
1.集合框架的概念
集合:
java.util包提供被称为集合(Collection)的容器类来存储各种类型的对象。
Java集合主要包括四种类型:Set(集),List(列表),Map(映射)和Queue(队列)。
Set:数据对象没有顺序且不可重复。类似于数学中的“集合”
List:数据对象有顺序且可重复。
Map:一个映射集合。每个元素都包含key-value(键----值对)。Key不可重复,但value可重复。
Queue:一个队列集合,强调对象先进先出的操作顺序。
集合框架:
是用来表示和操作集合的统一框架。为了使整个集合框架中的类便于使用,Java提供了标准的接口,允许不同类型的集合以相同的方式和高度互操作方式工作,使得集合容易扩展和修改。
集合框架包含三部分:接口、实现及算法。
2.掌握集合类相关的几个接口和几个类
接口 | 实现的功能 |
Collection | 一个独立元素的集合 |
List | 有序集合 |
Set | 不包含重复元素的集合 |
SortedSet | 不包含重复元素且按升序排列的集合 |
Map | 不包含重复key的一组key-value对元素集合 |
SortedMap | 在Map的基础上,增加了排序功能的集合 |
Iterator | 一个可单向遍历集合的迭代器 |
ListIterator | 一个可双向遍历集合的迭代器 |
3.掌握collections算法类的应用
Collection接口:存储方式为将元素作为单个对象存储。
方法 | 功能描述 |
int size() | 获取集合中元素个数 |
boolean add(object) | 添加一个元素 |
boolean addAll(Collection) | 添加一个集合中的所有元素 |
boolean remove(object ) | 删除一个元素 |
boolean removeAll(Collection ) | 删除集合中所有元素 |
void clear() | 清空,删除所有元素 |
boolean retainAll(Collection) | 求两个集合的交集 |
boolean isEmpty() | 判断集合是否为空 |
boolean contains(Object ) | 判断是否包含指定元素 |
boolean containsAll(Collection ) | 判断是否包含指定集合中所有元素 |
Object[] to() | 返回包含此Collection中所有元素的数组 |
返回包含此Collection中所有元素的数组,返回数组的运行时类型与指定数组运行时类型相同 | |
第9章 文字与图形GUI设计
第10章 常用组件GUI设计
第11章 高级组件GUI设计
一.事件响应原理
Java采用委托事件模型来处理事件。委托事件模型由事件源、事件(Event)及事件监听器(Listener)组成。
1.事件源与事件
如果在一个图形用户界面上,点击按钮后改变了界面上的内容,这就意味着这个界面上的按钮组件可以触发一个事件。我们称这个按钮组件是事件源。
2.事件监听器
事件监听器是实现事件监听的接口类。事件监听器不断地监听事件源的动作,当事件源产生一个事件,监听器接收到事件源的通知后,就调用特定的方法执行指定的动作。
3.委托事件模型的实现步骤如下:
(1) 建立事件源对象;
(2) 为事件源对象选择合适的事件监听器;
(3) 为监听器添加适当的处理方法;
(4) 为监听器与事件源建立联系。
2.布局管理器
1.java.FlowLayout类是java.lang.Object类的直接子类。FlowLayout的布局策略是将遵循这种布局策略的容器中的组件按照加入的先后顺序从左向右排列,当一行排满之后就转到下一行继续从左至右排列,每一行中的组件都居中排列。
FlowLayout是Applet缺省使用的布局编辑策略。
FlowLayout类有三个构造方法,分别是:
(1) FlowLayout( ) 、(2) FlowLayout(int align) 、(3) FlowLayout(int align,int hgap,int vgap)
2. java.BorderLayout类是java.lang.Object类的直接子类。BorderLayout布局策略是把容器内的空间划分为东、西、南、北、中五个区域。这五个区域分别用字符串常量East、West、South、North、Center表示。
3.CardLayout的版面布局方式是将每个组件看成一张卡片,如同扑克牌一样将组件堆叠起来,而显示在屏幕上的每次只能是最上面的一个组件,这个被显示的组件将占据所有的容器空间。用户可通过表10.1所示的方法选择使用其中的卡片。
CardLayout类有两个构造方法,分别是CardLayout( )和CardLayout(int hgap,int vgap)
4.GridLayout的布局策略是把容器的空间划分为若干行、若干列的网格区域,而每个组件按添加的顺序从左向右、从上向下地占据这些网格。
GridLayout类的三个构造方法如下:
GridLayout( )
GridLayout(int rows,int cols)
(3) GridLayout(int rows,int cols,int hgap,int vgap)
5.BoxLayout是swing所提供的布局管理器,BoxLayout类与Box类结合,可以提供多样化的布局。通常的做法是使用若干个Box容器,由于Box容器的默认布局是BoxLayout,而且只能使用这个布局,因此,每一个Box容器中组件的排列方式也只能按水平或垂直方向排列。
创建BoxLayout类的对象的构造方法是:BoxLayout(Container target,int axis)
第12章 异常处理
1.JAVA的异常处理机制
1. Java中引入了异常和异常类,并且定义了很多异常类。每个异常类代表一类运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。每当Java程序运行过程中发生一个可识别的运行错误时,系统都会产生一个相应异常类的对象,并由系统中相应的机制来处理,以确保不会产生死机、死循环或其他对操作系统有损害的结果,从而保证了整个程序运行的安全性。
2. 两种方式处理异常:一是由Java异常处理机制的预设处理方法来处理,即一旦程序发生异常,程序就会被终止并显示一些错误信息给用户;二是使用Java语言提供的try-catch-finally语句自行处理异常。
2.了解JAVA的异常处理语句
1.try-catch-finally语句
ry-catch-finally组合语句用来实现抛出异常和捕获异常的功能。其格式如下:
try
{
statements //可能发生异常的程序代码
}
catch (ExceptionType1 ExceptionObject)
{
Exception Handling //处理异常的程序代码1
}
catch(ExceptionType2 ExceptionObject)
{
Exception Handling //处理异常的程序代码2
}
。
。
finally
{
Finally Handling
//无论是否发生异常都要执行的程序代码
}
2.嵌套try-catch-finally语句
3.抛出异常的throw语句与throws语句
(1)throw语句
throw语句用来明确地抛出一个异常。throw语句的作用是改变程序的执行流程,使程序跳到相应的异常处理语句中执行。
格式:throw exceptionObject
(2)throws语句
在有些情况下,不需要一个方法本身来处理异常,而是希望把异常向上移交给调用这个方法的方法来处理。此时,可以通过throws语句来处理。
格式:returnType methodName(para1,para2,…) throws exceptionList
第13章 多线程
一.多线程的概念
每个Java程序都有一个缺省的主线程。对于Application,主线程是main( )方法执行的线索。对于Applet,主线程指挥浏览器加载并执行Java小程序。要想实现多线程,必须在主线程中创建新的线程对象。
Java语言使用Thread类及其子类的对象来表示线程。新建的线程在它的一个完整的生命周期中通常要经历新生、就绪、运行、阻塞和死亡等五种状态
2.怎样创建和启动一个新的线程
1.新生状态
当用new关键字和某线程类的构造方法创建一个线程对象后,这个线程对象处于新生状态,此时它已经有了相应的内存空间,并已被初始化。处于该状态的线程可通过调用start( )方法进入就绪状态。
2.就绪状态
处于就绪状态的线程已经具备了运行的条件,但尚未分配到CPU资源,因而它将进入线程队列排队,等待系统为它分配CPU。一旦获得了CPU资源,该线程就进入运行状态,并自动地调用自己的run方法。此时,它脱离创建它的主线程,独立开始了自己的生命周期。
3.运行状态
进入运行状态的线程执行自己的run方法中的代码。若遇到下列情况之一,将终止run方法的执行:
(1) 终止操作。调用当前线程的stop方法或destroy方法进入死亡状态。
(2) 等待操作。调用当前线程的join(millis)方法或wait(millis)方法进入阻塞状态。当线程进入阻塞状态时,在millis(毫秒)内可由其他线程调用notify或notifyAll方法将其唤醒,进入就绪状态。在millis内若不唤醒,则需等待到当前线程结束。
(3) 睡眠操作。调用sleep(millis)方法来实现。当前线程停止执行后,会处于阻塞状态,睡眠millis(毫秒)之后重新进入就绪状态。
(4) 挂起操作。通过调用suspend方法来实现。将当前线程挂起,进入阻塞状态,之后当其他线程调用当前线程的resume方法后,才能使其进入就绪状态。
(5) 退让操作。通过调用yield方法来实现。当前线程放弃执行,进入就绪状态。
(6) 当前线程要求I/O时,则进入阻塞状态。
(7) 若分配给当前线程的时间片用完,则当前线程进入就绪状态。若当前线程的run方法执行完,则线程进入死亡状态。
4.阻塞状态
一个正在执行的线程在某些特殊情况下,如执行了suspend、join或sleep方法,或等待I/O设备的使用权,那么它将让出CPU并暂时中止自己的执行,进入阻塞状态。阻塞时它不能进入就绪队列,只有当引起阻塞的原因被消除时,线程才可以转入就绪状态,重新进到线程队列中排队等待CPU资源,以便从原终止处开始继续运行。
5.死亡状态
处于死亡状态的线程将永远不再执行。线程死亡有两个原因:一是正常运行的线程完成了它的全部工作;二是线程被提前强制性地终止了。例如,通过执行stop或destroy方法来终止线程。
3.实现多线程的两种方法
在Java语言中创建线程对象有两种途径:一是以创建Thread类的子类为途径,二是以实现Runnable接口为途径。用实现Runnable接口的方式创建线程与用继承Thread类的方式创建线程无本质差别,但是,由于Java不支持多继承,因此任何类如果已经继承了某一类时,就无法再继承Thread类,这时只能通过实现接口Runnable的方式创建线程对象。例如,因为小应用程序已经继承了Applet类,所以不能再继承Thread类,而只能通过Runnable接口实现多线程。
第14章 输入与输出
一.输入输出基本概念
Java的输入/输出类库中有不同的流类来对应不同性质的输入/输出流。在java.io包中,基本输入/输出流类可按读/写数据的不同类型分为两种:字节流和字符流。
2.掌握输入输出流的分类
字节流用于读/写字节类型的数据(包括ASCII表中的字符)。字节流类可分为表示输入流的InputStream类及其子类,表示输出流的OutputStream类及其子类。
字符流用于读/写Unicode字符。它包括表示输入流的Reader类及其子类,表示输出流的Writer类及其子类。
输入流:
InputStream类:用于读取字节型数据的输入流类
OutputStream类:用于输出字节型数据的输出流类
第16张 JDBC连接数据库
1.Java程序与数据库连接
Java程序连接和存取数据库的应用程序接口(API)。此接口是Java核心API的一部分。JDBC由一群类和接口组成,它支持ANSI SQL-92标准,因此,通过调用这些类和接口所提供的成员方法,我们可以方便地连接各种不同的数据库,进而使用标准的SQL命令对数据库进行查询、插入、删除、更新等操作。
2.了解简单的数据库操作方法
可将SQL命令分成数据定义语言DDL(Data Definition Language)、数据操纵语言DML(Data Manipulation Language)、数据查询语言DQL(Data Query Language)和数据控制语言DCL(Data Control Language)四大类
定义语言:
1.创建数据表
CREATE TABLE 表名(字段名l 数据类型[限制条件],
字段名2 数据类型[限制条件],……,字段名n 数据类型[限制条件])
2.修改数据表
添加字段使用的格式为:
ALTER TABLE 表名 ADD 字段名 数据类型 [限制条件]
删除字段使用的格式为:
ALTER TABLE 表名 DROP 字段名
3.删除数据表
DROP TABLE 表名
操纵语言
1.向数据表中插入数据
INSERT INTO 表名(字段名l,……,字段名n) VALUES(值l,……,值n)
2.数据更新语句
UPDATE 表名 SET 字段名l 新值l [,字段名2 新值2……] WHERE 条件
3.删除记录语句
DELETE FROM 表名 WHERE 条件
查询语句
SELECT [DISTINCT] 字段名l[,字段名2,……] FROM 表名 [WHERE 条件]
¥29.8
¥9.9
¥59.8