导图社区 JAVA语言
面向对象程序设计总结,包括Java概述、Java语言的基础语法、面向对象编程语法、面向对象编程继承和多态、GUI/图形图像用户界面编程等内容。
编辑于2021-11-19 15:04:46Java
第一章 Java概述
1 Java语言简介
java语言是开源的,面向对象的
Java语言发展简史
JRE运行环境
1 核心API
2 集成API
3 用户界面API
4 发布技术
5 JVMJava虚拟机
JDK开发环境
编译器(java.exe)
JIT即时编译器
Java语言的特性
1 简单
相对C语言去繁留简、增加自动回收机制等
2 完全面向对象
主要集中于对象和接口
提供简单的类的封装、继承及多态实现
3 网络分布式计算
??
4 健壮性
合法性检查
异常处理机制
5 安全性
字节码校验机制
6 跨平台
通过java虚拟机可以实现一次编写随处运行
7 并发性
多线程
可以实现实时交互
全局事件循环机制
???
8 动态扩展
类库
多继承
2 Java技术的核心
1 JVMJava虚拟机
编译后文件(java.class)→JVM→当前操作平台可识别指令格式
2 GC垃圾回收机制
3 Java平台体系结构
1 Java SE
java platform standard edition 标准版,多用于桌面开发、低端商务应用 是Java技术的基础和核心,对以下两种提供底层支持
2 Java EE
java platform enterprise edition 企业版,多用于企业复杂问题
3 Java ME
java platform micro edition 微型版,多用于消费类电子设备
4 搭建Java程序的开发环境
基础开发工具JDK
安装目录
1 bin
存放编译器、解释器等开发工具,主要是可执行文件
2 db
内置java内存数据库
3 include
用于本地方法的文件
4 jre
运行时的环境文件
5 lib
类库文件
6 src.zip
内置类库的源代码文件
配置JDK
我的电脑>属性>高级系统设置>高级>环境变量 将bin目录的绝对路径添加到Path变量中
集成开发环境IDE
把程序开发过程中很多辅助功能(代码快速编辑、可视化开发、代码调试、程序部署等)整合在一起的工具软件 常用的有:Eclipse\NetBeans\IntelliJ等
5 Java程序开发步骤
1 编辑Java源代码
使用半角字符、区分大小写
缩进单位一般为1个Tab
文件名和类名一致,后缀为.java
2 编译Java程序
通过bin目录中的javac.exe可执行命令完成
生成.class文件,即字节码文件、类文件
在命令提示符窗口中通过“javac 源文件名.java”命令编译
3 运行Java程序
字节码执行工具java.exe
通过“java 文件名”命令运行
6 Java程序的装载和执行过程
1 装载程序
JVM的类装载器将所需类装载到内存中
装载器以分离的命名空间的方式区别类是由本地系统装载还是由网络远程装载,本地的会先被装载,可防止木马程序入侵 解释器会限制未经授权的访问,以保护受限的程序代码
2 检验程序
JVM的字节码检验器进行检验
3 执行程序
执行引擎(Hotspot)将指令翻译成机器指令
第二章 Java语言的基础语法
1 Java程序的基本架构
代码框架
public class 类名{ private 定义成员变量(类似变量); public 定义成员方法(类似方法); public static void main(String[] args){ 程序体 } }
public访问修饰符
class类
1 以大写字母开头
2 可以用字母或数字
3 多个单词时每个单词首字母大写
{}描述类体、方法体
从main方法(入口方法)开始执行
public static void main (String[] args){}
所有语句以;结束
原文件名与public修饰的类名相同,后缀为.java
println中ln表示换行
注释
注释不会翻译成字节码文件,不影响执行效率
单行注释 //
多行注释 /*...*/
文档注释 /**...*/
标识符
定义:各个组成要素(类、方法、变量)的名称
命名规范
1 组成:字母、数字、下划线、$
2 开头:字母、下划线、$
3 区分大小写且不能是关键字
关键字
定义:有专门用途的字符串
只有String、System首字母大写
2 数据类型
类类型/引用类型
表达复杂的数据状态
String字符串类型
初始化一个数组就是创建了一个对象,数组就是一个对象
字符串加上双引号就是一个String类型的对象
基本类型
最基础的数据类型,表达简单的状态 根据用途分为8种4类
整数型
分类
1 字节型 byte 1字节 -(2)7 ~ (2)7-1 默认值0
2 短整型 short 2字节 -(2)15 ~ (2)15-1 默认值0
3 整形 int 4字节 -(2)31 ~ (2)31-1 默认值0
4 长整型 long 8字节 -(2)31 ~ (2)31-1 默认值0
说明
整数都是有符号数
默认为int型,如要指定为long型需在数值后加L或l,short型加S或s,字节型加B或b
默认为10进制,如要指定为16进制要以0X或0x开头,2进制以0B或0b开头
可以为数值加下划线,如123_456
浮点型
代表有小数部分的数值类型
分类
1 单精度浮点型 float 4字节 -3.4E+38 ~ 3.4E+38 有效小数位6~7 默认值0.0f
2 双精度浮点型 double 8字节 -1.7E+308 ~ 1.7E+308 有效小数位15 默认值0.0
说明
浮点数据可用10进制也可用科学计数法
默认为double型,指定为double型在数值后加D或d,指定为float型在数值后加F或f
字符型
特定的单个字符,用单引号表示 '0'与0意义不同
分类
1 字符型 char 2字节 0 ~ (2)16-1 默认值0
2 用\转义的字符
\b 退格符
\r 回车符
\n 换行符
\t 制表符
\' 单引号
\" 双引号
\\ 反斜杠
说明
可作为无符号整数直接参与运算
默认值为\u0000,在UTF-16字符集中编号为0
Java语言以国际统一标准编码字符集”Unicode字符集“的UTF-16集作为默认的字符集 Unicode字符集范围大于ASCII码表
子主题
布尔型
逻辑型,逻辑中的成立(真、true)和不成立(假、false)
分类
布尔型 boolean 存储空间不确定 true/false 默认值false
说明
只能用true和false表示真假,不能用0或非0
存储空间取决于Java虚拟机的具体实现,可以是1字节也可以是2字节
3 变量
变量名
通过变量名可以访问变量中存储的值
声明
数据类型 变量名;
初始化
变量名 = 值;
数据类型 变量名 = 值;(声明同时初始化)
重赋值
变量名 = 新值;
作用域
即有效范围
从变量声明的位置→声明所在语句块结束
4 数据类型间的转换
自动转换
隐式类型转换,由JVM自动完成 储存范围小的数据类型→储存范围大的数据类型
byte→short→int→long→float→double
强制转换
显式类型转换,必须书写代码来指明的类型转换 储存范围大的数据类型→储存范围小的数据类型 布尔型不能与任何类型进行强制转换
(目标类型)需要转换的值
5 运算符
算术运算符
也叫数学运算符
+ 加
- 减
* 乘
/ 除
% 模运算(求余)
++ 自增(前、后)
-- 自减(前、后)
赋值运算符
为变量指定具体值的符号,运算顺序从右到左
= 赋值
+= 加等于
-= 减等于
*= 乘等于
/= 除等于
%= 模等于
复合赋值运算符
不进行表达式类型自动提升,不改变最终结果的数据类型
关系运算符
也称比较运算符,实现数据之间的比较 结果是boolean类型的值
== 等于
!= 不等于
< 小于
> 大于
<= 小于等于
>= 大于等于
逻辑运算符
进行逻辑运算的符号 运算结果是布尔型的值,参与运算的数据也必须是布尔型的值
&& 短路与
|| 短路或
! 非
& 与
| 或
^ 异或
三目运算符
操作三个数的运算符号
条件表达式 ? 值1 : 值2
条件表达式的值必须为布尔型
值1和值2必须能转化成相同类型
条件表达式的值为true取值1的值,否则取值2的值
位运算符
基本位运算符
在二进制的基础上对数进行按位操作
1 按位与&
2 按位或|
3 按位异或^
4 按位取反~
移位运算符
1 左移运算符<<
高位移出(舍弃),低位补0
2 有符号右移运算符>>
计算字符右移必须使用??
低位舍弃,高位正数补0负数补1
3 无符号右移运算符>>>
低位舍弃,高位补0
表达式
由运算符、变量和常数组成的式子
是组成程序的基本单位
由多个运算符组成的表达式有最后一个运算符决定最终类型
表达式类型的自动提升
1 两个操作数中有一个是double型,另一个将被转换成double型
2 否则,两个操作数中有一个是float型,另一个将转换成float型
3 否则,两个操作数中有一个是long型,另一个将被转化成long型
4 否则两操作数都将转换成int型
运算符优先级
6 流程控制
流程是指程序在运行时执行代码的顺序,流程控制指通过控制程序执行代码的顺序来实现想要的功能。 流程控制部分是程序中语法和逻辑的结合,是程序中最灵活的部分。
顺序语句
顺序语句是一种自然语句,没有特定语法格式,只需根据逻辑的先后顺序依次书写。
条件语句
if语句
if 跟离他最近的else匹配
if语句
if(条件表达式){ 功能代码; }
if-else语句
if(条件表达式){ 功能代码1; } else{ 功能代码2; }
if...else if...else语句
if(条件表达式1){ 功能代码1; }else if(条件表达式2){ 功能代码2; }else if(条件表达式3){ 功能代码3; }
switch/case语句
switch(表达式){ case 值1: 功能代码1; [break;] case 值2: 功能代码2; [break;] ... default: 功能代码n+1; [break;] }
表达式的计算结果只能是byte、short、char、int、string五种类型之一
值1、值2、...、值n只能为常数或常量,不能为变量
每个case语句后面的语句块结束时的break用来结束该分支,若没有break则继续执行下一语句
default语句可以放在switch语句中的任意位置是默认选择,其后不用break
循环语句
while语句
while(循环条件){ 循环体; } 先判断(成立),再执行
循环体最少执行0次
do-while语句
do{ 循环体; }while(循环条件); 先循环,再判断(为真执行循环)
while语句结尾要有; 循环体最少执行一次
一般用于循环次数不明确的循环
for语句
for(初始化语句;循环条件;更新计数器语句){ 循环体; }
初始化语句可为空,循环条件为空默认是true,更新计数器可为空,三者不可同时为空
都为空相当于while(true)会陷入死循环 分号不能省略
循环语句内定义的变量不可在循环体外使用
表达式1可以包含其他表达式
一般用于循环次数明确的循环
break语句
结束循环语句执行
只用于循环体和switch体中,只能中断所在循环最内层
中断多层嵌套循环:带标签的break语句
label是标签名,放在循环语句上面,以:结束,终端循环时用break label;
continue语句
跳过本次循环,继续执行下一次循环
while、do-whlie跳转到循环条件处开始执行
for跳转到更新计数器语句开始执行
return语句
退出当前方法,返回到调用该方法语句的下一个语句
7 数组
一组相同数据类型的集合
一维数组
声明
1 数据类型[] 数组名;
2 数据类型 数组名[];
创建
数组创建好后,系统会根据数组的数据类型对数组的每个元素赋默认值 数组一旦创建后,存放元素的个数就固定了,以后不能再改
1 数组名 = new 数据类型[长度];
2 声明同时创建:数据类型[] 数据名 = new 数据类型[长度];
引用
数组名[下标]
初始化
对数组中的元素进行赋值
动态初始化
为已经创建好的数组的每个元素进行赋值
静态初始化
声明数组的同时就创建数组并对每个元素进行赋值,一次性初始化所有元素 值的类型必须与数组声明时的类型匹配,或可以进行自动转换
1 数据类型[] 数组名 = {值1,值2,...,值n};
int A[5]={1,2,3,4,5}
初始化的时候并不知道数组长度
2 数据类型[] 数组名 = new 数据类型[] {值1,值2,...,值n};
获取数组长度
数组名.length
不是一个方法
遍历(迭代)
使用下标和获取数组长度的语法,使用循环语句实现
用for-each遍历
通过变量名实现遍历 只能用于访问和遍历数组元素,不能更新数组元素的值
for(数据类型 变量名 : 数组或集合变量名)
int [] array = {1,2,3.4,5,6}; for(int element : array) { System.out.println(element); }
入口方法的参数-String[] args
表示入口方法接收了一个字符串数组,该字符串数组被称为命令行参数,即通过命令提示符执行该程序时可以穿字符串参数给入口方法,入口方法用srgs数组接收
命令行参数
多维数组
数组类型的数组即二维数组
声明
1 数据类型[][] 数组名;
2 数据类型[] 数组名[];
3 数据类型 数组名[][];
创建
可以只指定一维长度
1 数组名 = new 数据类型[一维长度][二维长度];
2 成名同时创建:数据类型[][] 数组名 = new 数据类型[一维长度][二维长度];
引用
数组名[一维下标][二维下标]
初始化
动态初始化
静态初始化
获取数组长度
使用数组名.length获取的是一维长度
遍历
第三章 面向对象编程语法
1 概述
1 面向过程的设计思想
以一个具体流程为单位
关心功能实现
函数间耦合性强
2 面向对象的设计思想
Object Oriented Programming
特点
以具体事物为单位
关注它的属性(特征)及功能(行为)
工程更模块化,更好实现“开_闭”原则
三大特征
1封装Encapsulation
2继承Inheritance
3多态Polymorphism
3类和对象
类
Java的最小编程单位,设计和实现Java程序的基础
代表总体特征,只描述特征的类型和结构,不指定数值
对一组具有相同特征和相同功能的事物的概括
对象
万事万物皆对象
对象是用类来创建的,类是对象的模板,对象是类的实例
OOP通过封装类来实现对象,通过对象之间的功能协作完成任务
2 封装类
1 含义
根据实际应用从同一类型事物中抽象出相关的共同特性和行为,用Java语言模拟包装到一个程序单元中,并隐藏行为的实现过程
类是面向对象编程的最小封装单元
2 语法格式
访问控制符 [修饰符] class 类名 { [属性声明] [方法声明] [构造器声明] }
1 访问控制符
私有的 private 本类 默认的 default 本类、本包 受保护的 protected 本类、本包、不同包子类 公共的 public 本类、本包、不同包子类、不同包非子类
限定声明的该类可以被其他类访问的范围
2 修饰符
增强类的功能,使声明的该类具有某种特定的能力
3 class
声明类的关键字,后面紧跟类名
4 类名
一种标识符
5 {}
内含类的主体,声明类的内部结构,一般包含(不一定全包含)三个部分
1 属性声明/成员变量
也称为字段/域
声明该类事物的共有特征
2 方法说明/成员方法
声明该类事物的共有功能
3 构造器声明/构造方法
创建和初始化类的对象的专门方法
3 定义属性
属性attribute 访问控制符 [修饰符] 数据类型 属性名 [=值]
1 访问控制符修饰类属性时建议使用private
2 数据类型可以是基本类型也可以是类类型
3 属性名是一个标识符
4 定义属性的同时允许进行赋值
4 定义方法
方法method在面向过程编程语言中成为==称作函数function,是一段代码集合,用来实现某特定功能 访问控制符 [修饰符] 返回值类型 方法名(参数列表) { 方法体 }
1 返回值类型是方法功能实现后需要得到的结果类型,不需要返回值则为void
2 方法名是一个标识符
3 参数列表是声明方法需要从外部传入的数据类型及个数
数据类型 参数名1,数据类型 参数名2
参数的值在方法调用时指定,在方法内部可以直接使用
4 方法体在逻辑上实现了方法的功能,可以用return返回结果值
5 定义构造器
构造器constructor,用于构建和初始化对象 访问控制符 构造器名(参数列表){ 构造方法体; }
1 构造器名必须与类名相同
2 一个类中构造器可以有多个,但是参数列表要不同
3 构造器无返回值,也不需要用void来声明
4 若类中无定义构造器则系统自动添加默认构造器
3 对象的创建和使用
1 对象的创建
new 构造器(参数值列表)
参数值是根据类的构造器定义来确定的
对象
对象变量
又称为对象的引用
类类型的变量,指向一个对象
2 属性的初始化
若调用构造器没有显示给某属性赋值,那么它会自动被复为默认值
数字变量0 布尔变量false 对象变量null
3 对象的使用
引用对象的属性
引用对象的方法
4 对象的回收
内置垃圾收集器自动回收
void finalize()方法(不建议使用)
4 深入理解方法
1方法的参数传递
传值
方法得到数据备份
方法不能修改基本类型参数的值/传值
引用
将堆内存空间的使用权交给多个栈内存空间使用
方法可以修改类类型参数的状态,但不能指向新的对象/传地址
2方法重载
overload
同名不同参
一个类内部出现了多个方法名相同,但参数列表(参数类型、个数、顺序)不同的方法
参数列表必须不同
1 参数个数不同
2参数的类型不同
3参数的多类型顺序不同
仅参数名称不同
返回值类型可以不同,但不能仅返回值类型不同
3方法的可变参数
可变参数varargs
在方法内部表示为一个数组...要放在参数列表最后
4递归方法
每调用一次新增一个数据区
5 this关键字
解决成员变量与参数的模糊性,显示访问
构造器中用作调用其他构造器
6 属性、参数和局部变量的关系
属性:本类所有方法可用
参数:本方法可用
局部变量:从方法内声明到方法结束
7 JavaBean
8 包
作用:避免名称重复
定义格式:package 包名称[.子包名称]
要放在代码第一行,,且只能出现一次
包名称可以设置多个层次,用.隔开
包名尽量用小写
包层次在编译时会转换成文件目录层次
打包编译命令
javac -d.StudentTest.java//相对路径
-d 表示生成目录,以package定义为准
. 表示在当前文件夹下生成package定义的包
javac -d E:\java StudentTest.java//绝对路径
E:\java 表示在其下生成package定义的包
打包运行命令
带包的类的名称为:包名.类名,运行时java 包.类名
java 包名.StudentTest//相对路径
java -cp E:\java 包名.StudentTest//绝对路径
-cp 表示存放包的目录,编译时的绝对路径
包的引入
import
放在package和class之间
手工导入所需类
import 包层次名称.类名称;
JVM自动加载所需类
import 包层次名称.*;
常用包
9 文档注释
第四章 面向对象编程继承和多态
1 类的继承
使用extends关键字
class 父类{} class 子类 extends 父类{}//实现继承或者类的扩展
单重继承
一个类只有一个父类
多层继承
一个类只有一个父类,但父类还可以有父类
特点
子类拥有父类所有属性和方法
子类不拥有父类的构造方法
父类不拥有子类特有的属性和方法
super关键字
在子类构造器第一行
定义:子类显示调用父类内容时使用的关键字
作用
访问直接父类隐藏的数据成员
super.数据成员
调用直接父类中被覆盖的成员方法
super.成员方法(参数)
调用直接父类的构造方法
使用子类构造器创建自己的对象时,子类构造器要先调用父类构造器对父类属性进行初始化,然后才能对自己的属性进行初始化。 要放在构造器的第一行
super(参数)
使用情况
1 子类构造器调用父类默认构造器(无参数)
2 显示调用父类有参构造器
2 访问控制符
3 常用修饰符
static
静态的,修饰与类有关的成员(对所有对象共享的成员)
类属性
static关键字修饰的属性,也叫静态属性、静态字段 没有修饰的属性叫实例属性、实例字段、实例变量
类方法
static修饰的方法,不需要所属类的对象就可以使用
类方法内部不能使用this
不能引用其他非静态成员//类方法只能给类属性赋值
静态初始化块
类名.类变量名//对象名..类变量名
final
最终的、最后的修饰不可变量、方法和类
final变量
只能赋值一次,相当于常量
表示常量 √
final方法
最终方法,不能被覆盖(重写)
可以重载
final类
最终类,不能被继承(无子类)
可以创建对象
4 方法覆盖override
同名同参同返回类型,仅方法体不同
子类覆盖方法的访问权限不得小于父类
父类的静态方法无法被覆盖,只能隐藏
子类的覆盖方法不得比父类抛出更多的异常
5 多态
尽量使用父类类型作为对象变量,即面向父类编程
对象变量多态
必须有继承
向上转型:子类赋给父类,自动进行
父类 父类对象=子类实例
向下转型:父类赋给子类,类型强制转换
子类 子类对象=(子类)父类实例
instanceof:判断一个对象是否为某个类的实例,结果是Boolean型
对象变量 instanceof 类名
多态方法
方法具有多态性要满足以下条件
要有继承
要有方法覆盖
要有父类对象变量引用子类对象
多态参数
类中方法在使用时不仅可以引用本类对象,也可以引用子类对象
6 抽象类abstract
抽象类形式: abstract class 类名 { 成员变量; 成员方法(){方法体} //定义普通方法 abstract 方法名(); //定义抽象方法 }
抽象方法:仅方法的声明,没有方法体
子类继承抽象父类时必须重写抽象方法
若没有覆盖父类的所有抽象方法则也要声明成抽象的
类的属性和构造方法不能被声明成抽象的
具有抽象方法的类必须是抽象类,没有抽象方法的类不一定是抽象类
可以声明对象变量,但不能创建对象
抽象类的对象变量只能引用具体子类的对象
7 接口interface
定义:接口包括接口声明和接口体
格式:public interface 接口名{接口体}
对接口功能的实现称为继承,用implements关键字实现接口
接口中的方法都是抽象的,且自动都是public类型的
接口中不能定义构造器
接口变量只引用实现了该接口的子类的对象
一个类可以实现多个接口和继承抽象类,接口间用逗号隔开
class 类 implements 接口A,接口B{}
8 嵌套类
9 JAR文件
十三章 标注和反射
1 标注
2 反射
十二章 GUI/图形图像用户界面编程
1 Swing概述
相较抽象窗口工具集AWT更丰富、移植性强、量级更轻
2 Swing容器
顶层容器
JFrame
框架,具有Windows窗口特征的容器组件,其他组件要依附它构成窗口界面
定义:JFrame 框架名 = new JFrame(参数);
实例化了一个框架,用参数给出标题
构造方法
JFrame() 初始时不可见的新窗体
JFrame(String title) 初始时不可见的、新的具有指定标题的窗体
常用方法
setVisible(booolean b)
设置窗体可见性,默认为不可见
setSize(int width,int height)
设置窗体大小,以像素为单位
setTitle(String title)
设置标题内容
getTitle()
获取标题内容
setLocation(int x,int y)
设置窗体位置,x、y是左上角坐标
setLayout(LayoutManager mgr)
布局管理器
关闭时的响应动作
DO_NOTHING_ON_CLOSE
进行关闭窗口操作时什么也不做
HIDE_ON_CLOSE
进行操作时隐藏窗口
DISPOSE_ON_CLOSE
进行操作时销毁窗口占用的资源,JVM终止
EXIT_ON_CLOSE
进行关闭窗口操作时退出程序
调用方法
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JDialog
JWindow
JApplet
中间层组件
基本组件
3 绘图
4 Swing组件
按钮
常规按钮JButton
JButton(Icon icon)
带图标的按钮
JButton(String text)
带文本的按钮
JButton(String text,Icon icon)
带初始文本和图标的按钮
JButton btn = new JButton("确定")
复选框JCheckBox
单选按钮JRadioButton
文本组件
文本控件
纯文本区域
格式文本区域
不可编辑信息显示组件
标签Label
提示信息JToolTip
5 布局管理器
6 处理GUI事件
7 切换Swing观感
十一章 网络编程
1 网络编程基础知识
2 Java与网络
3 Java网络编程
第十章 I/O流
用于传输数据 input,输入 output,输出 流:数据流
子主题
1 File类
2 I/O原理
3 流类概述
字节流
可以处理任何一种数据
字符流
只能处理纯文本文件
4 文件流
5 缓冲流
6 转换流
7 数据流
8 打印流
9 对象流
10 随机存取文件流
FileWriter写数据
1导包
import java.io.FileWriter; import java.io.IOException
2创建、构造方法
public FileWriter(String fileName;//参数字符串就是文件的路径名) FileWriter fw = new FileWriter("fiel01.txt")//参数字符串是文件名,文件扩展名只能决定用什么软件打开,不能决定内容
3使用,调用成员方法
写数据
public void writer(String str);//参数是写入文件中的字符串
关闭流
public void close();//new完就打开了,要关闭释放资源
使用步骤
创
FileWeiter fw = new FielWriter(("fiel01.txt",true);
如果指定文件不存在会自动创建该文件
写
fw.writer("Hello,World!")
如果指定文件已存在会覆盖写入
如果要追加写入要使用重载构造方法 当第二个参数值为true时追加写入
换行\r\n
关
fw.close();
FlieReadaer读文件
import Java.io.FielReader;
public FlieReader(String fielName); FlieReader fr = new FileReader("file01.text")
public int read();//读取下一个字符,得到对应的ASCI或Unicode值
public int read(char[] buf);//一次读取整个字符数组的值,返回读取到的有效个数
public void close();//关闭释放资源
第九章 Java集合框架
1 Java集合框架概述
2 Collection接口及Iterator接口
3 Set接口及实现类
4 List接口及实现类
5 Map接口及实现类
6 遗留的集合类
7 排序集合
8 集合工具类
9 如何选择合适的集合类
第八章 使用泛型
1 泛型概述
2 泛型类和接口的定义及使用
3 有界类型参数
4 泛型方法
5 类型参数的通配符
6 擦除
7 泛型的局限
第七章 多线程
1 线程概述
2 线程的创建和启动
3 线程的状态及转换
4 多线程的调度和优先级
5 线程的基本控制
6 多线程的同步
7 线程交互
8 用Timer类调度任务
第六章 Java SE API常用类
1 Java SE API 文档概述
2 java.lang包
3 java.util包
4 国际化相关类
5 正则表达式相关类
6 大数字操作
第五章 异常
1 异常exception
错误error
异常exception
2 异常类的层次结构
3 异常处理机制
try {//可能会出现异常的代码段} catch(异常类型 e) {//对类型匹配的异常进行处理的代码段} finally {//一定要执行的代码}
后面可以跟多个catch代码块
1抛出异常
一旦产生异常首先会产生一个异常类的实例化对象
try语句后可以只有catch也可以只有finally,但不能独立存在
2捕获异常
在try语句中对异常对象进行捕捉,一旦try语句块的代码发生异常就开始执行catch,若无异常则不执行
异常语句块的顺序:从小到大,先子后父
3异常处理
产生的异常对象和catch语句中的各个异常类型进行匹配,匹配成功则执行catch语句 无论try语句块中程序有无异常都会执行,break、continue、return都不影响,除非JVM关闭
异常栈跟踪
方法调用栈:调用的一些列方法用于完成复杂任务
栈跟踪:记录未处理异常的各个方法以及发生问题的代码行,用于迅速查找程序错误
异常栈跟踪信息用printStackTrace()显示
4 声明异常
及时处理异常try-catch-finally
声明该方法可能抛出该异常throws/该方法不处理异常
访问控制符 返回值类型 方法名(参数)throws 异常类型{}
抛出多个异常可以用逗号隔开
异常抛出:产生一个异常事件,生成一个异常对象,将他们提交给运行系统,系统找相应的代码处理异常
5 手动抛出异常throw
throw 异常对象
6 自定义异常
class 自定义异常类名 extends Exception{}
声明一个新异常类,从Java已有定义的异常类继承,如IOException
定义或继承属性、方法
7 JDK 7新增异常处理语法
8 处理异常时的建议
Java的输入
引入类文件:import java.util.Scanner;
在主函数中添加:Scanner scan = new Scanner(System.in); String str = scan.next();//使用next读取并保存
确定保存类型:int i = Integer.parseInt(str); float f = Float.parseFloat(str);
强类型语言
1 声明变量时必须指定数据类型,先声明才能使用
2 给变量赋的值类型必须与变量类型一致
3 参与运算的数据类型要与变量类型一致
4 变量一旦定义变量名和类型都不可改变
科学计数法
E不分大小写
E前后必须有数字,可+可-可0
E前是整数部分,后是10的指数
E后必须是整数,不能有变量,+号可省略