Java总结

来源:互联网 发布:河南农业网络电视台 编辑:程序博客网 时间:2024/05/05 14:15
Java基础
关键字:
在JDK1.2之前是48个关键字。在JDK1.5以后加了新增两个关键字。
特殊关键字不能做标识符,都是小写
abstract --- 定义抽象类或者抽象方法
assert --- 断言(*)
boolean --- 定义布尔类型的关键字
byte --- 定义字节类型(最小的整型)的关键字
break --- 终止循环
catch --- 捕获异常
continue --- 让循环进入下一趟循环
char --- 定义字符型的关键字
class --- 定义类的关键字
case --- 用于switch-case-default多分支结构的关键字(定义一个分支(等值判断),通常每个分支后会有一个break)
default --- 用于switch-case-default多分支结构的关键字(之前的case都没有匹配上就会执行default中的代码)
double --- 定义双精度类型的关键字
do --- 构造do-while循环的关键字
else --- 构造if-else分支结构的关键字
enum --- 定义枚举类型的关键字(符号常量) (*)
extends --- 继承的关键字
final --- 三种用法:a. 定义常量;b. 定义终结类;c.定义终结方法
finally --- 定义总是执行代码(通常跟在try-catch之后,释放外部资源)
float --- 定义单精度浮点型的关键字
for --- 构造for循环的关键字
if --- 构造if-else分支结构的关键字
int --- 定义整型的关键字
implements --- 用于实现接口的关键字
instanceof --- 用于RTTI(运行时类型识别)的关键字
import --- 导入包的关键字
interface --- 定义接口的关键字(约定、能力、角色)
long --- 定义长整型的关键字
new --- 创建对象的关键字
native --- 声明本地方法的关键字(由C/C++编写的方法)
package --- 定义包的关键字(管理类、解决名字冲突问题)
public --- 访问修饰符(公开)
protected --- 访问修饰符(受保护:对子类相当于公开,对不在同一个包下的其他类相当于私有)
private --- 访问修饰符(私有)
return --- 让方法返回的关键字
static --- 静态修饰符(静态方法、静态成员、静态初始化块、静态内部类)
strictfp --- 定义严格浮点运算的关键字
super --- 代表父类对象引用的关键字(可以调用父类构造器、调用父类方法、访问父类成员)
synchronized --- 同步
switch --- 用于switch-case-default多分支结构的关键字(switch接受的表达式可以是byte、short、int、char,1.5可以接受enum、1.7可以接受String)
short --- 定义短整型的关键字
this --- 表示当前对象引用的关键字
transient --- 表示不需要序列化的关键字
throw --- 抛出异常对象
throws --- 在定义方法时声明方法调用可能引发的异常
try --- 将可能出异常状况的代码保护起来
void --- 没有返回值
volatile --- 防止编译器错误优化假设的关键字
while --- 构造do-while循环的关键字 / 构造while循环的关键
goto --- 跳转(不能用,保留字)
const --- 常量(不能用,保留字)
标识符
标识符的命名规则:
1. 字母、数字、下划线和$,数字不能开头
2. 大小写敏感
3. 不能跟关键字冲突
见名知意
变量和方法命名:驼峰标识(Camel Notation)第一个单词小写以后每个单词首字母大写
类命名:帕斯卡标识(Pascal Notation)每个单词首字母大写
 
运算符
+ - * / % 算术运算
= += -= *= 赋值运算
() 类型转换/改变优先级
[] 下标运算
?: 条件运算(三目运算/三元运算)
&& 短路与 || 短路或 短路运算
& 逻辑与 | 逻辑或
!逻辑变反
> < >= <= == != 关系运算
instanceof 类型识别运算 new 创建对象运算
++ -- 自增/自减运算
& | ^ ~ >> << >>> 位运算
+ 字符串连接
+ - 正负号运算
. 访问成员运算
, 逗号运算
 注意:当两个同等优先级别的运算符出现在一个语句中时,Java语句规定它们从左到右执行计算。
字面量
直接量
100、10L
1.5F、3.14、1.2E-3
'x'、'\t'、'\u0xAB'
"Hello, world"
String.class、int[].class
 
分隔符
逗号、分号、圆括号、方括号、花括号、冒号、空格
 
数据类型
基本数据类型:整型:byte  short  int  long  
  浮点型:float  double
  字符型:char
  布尔型:boolean (true false)
引用数据类型:除开基本数据类型都是引用数据类型
数据的类型转换:强转导致精度丢失或溢出
 
程序控制
 
顺序结构
分支结构 if else - if else  switch - case 等值比较。比较的类型:byte short int long char 1.5以后 接受enum(枚举)1.7 以后接受String
循环结构 do - whlie 后验循环,循环至少被执行一次 while 先验循环 for 先验循环
break:结束本次循环
continue:结束本层循环,只能用在循环里面


方法签名的组成:
访问修饰符
可选修饰符
返回值
方法名
形式参数列表
抛出异常列表


Java只有按值调用。
可以调用构造器的唯一时机是对象被实例化。




 
Java面向对象
 
Java是纯面向对象编程的语言。面向对象编程把软件系统看成对象的集合,更接近人类的自然思维方式。


对象的特征:
万物皆对象,对象因关注而产生(在问题领域中实体和概念都可以抽象为对象,但是对象的产生只是因为我们关注而存在)
每个对象都是唯一的(没有相同的两片树叶,所以也没有相同的两个对象)
对象具有属性和行为(每个对象都有相应的描述,相应的特征,相应的形容词。就是对象的属性和行为)
对象具有状态(例如人,人的体重是随时在改变的这就是状态)
对象都属于某个类,每个对象都是某个类的实例(对象时类的实例,是具体的实现,例如:狗,猫。都是动物)
类:是一组具有相同属性和行为的对象的组合用类来模拟现实生活中的是实体,是所有对象的抽象统称,似模板。
属性:特征,数据,属性是形容词。行为:就是动词,是方法。
类是对象的抽象,对象是类的实例。
面向对象的特征(四大支柱):
继承,多态,封装,抽象。
 
继承
继承:从已有的类创建新类的过程。其表达了对象的一般与特殊的关系,体现了软件重用性和分离的特性,而在java中,只有单继承,每个子类只有一个父类
关键字:extends
继承优点:代码可重用性;父类的属性和方法可用于子类;子类可以进行扩展父类的属性和行为;设计应用出现变得简单;让类具备层次结构便于分析
继承工作方式:当new一个子类对象时,那么首先调用的是父类的构造方法再在父类后面跟上子类相应属性,即父类部分和子类部分共同构成完整的子类对象,其在内存中采用内存叠加 
提供继承信息的类叫父类(超类,基类)
得到继承信息的类叫子类(派生类,衍生类)
子类是用来扩展父类能力的,如果子类缩小父类的能力继承关系不成立。
1、父类对象可以指向子类对象
2、Java只支持单继承
在继承中父类需要给子类提供构造器。
构造器:方法名与类名相同,没有返回值。
构造器的作用:初始化数据和创建对象
方法重载:方法名相同,参数列表不同。
满足重载的条件:
方法名相同
方法阿德参数类型、个数、顺序不同
方法的返回类型可以不相同
方法的修饰符可以不同
参数签名是指:参数的类型、个数和顺序。
方法重写(Override):如果子类中定义的一个方法,其名称、返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,这就是子类方法覆盖了父类方法。
方法重写必须满足的约束:
子类方法的名称、参数签名和返回类型把必须与父类的方法名、参数签名和返回类型一致。
子类方法不能缩小父类方法的访问权限。
子类不能抛出比父类方法更多的异常。
方法覆盖至存在与子类和父类。在同一个类中方法只能被重载,不能被覆盖。
父类的静态方法不能被子类覆盖为非静态方法。
子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法。 《Java面向对象编程》P167
父类的非静态方法不能被子类覆盖为静态方法。
父类的私有方法不能被子类覆盖
父类的抽象方法可以被子类通过两种途径覆盖:1、子类实现父类的抽象的方法,2、子类重新申明父类的抽象方法。
父类的非抽象方法可以被覆盖为抽象方法。
方法重载与方法重写的相同之处:


都要求方法名相同
都可以用于抽象方法和非抽象方法之间
方法重载与方法重写的区别:


方法重写要求参数签名必须一致,而方法重载要求参数签名必须不一致
方法重写要求返回类型必须一致,而方法重载对此不做限制
方法重写只能用于子类重写父类的方法,方法重载用于同一个类的所有方法(包括从父类中继承而来的方法)
方法重写对方法的访问权限和抛出异常有特殊要求,额方法重载在这方面没有任何限制。
父类的一个方法只能被子类重写一次,而一个方法在所在的类中可以被重载多次。
Super和this
Super的使用:
在构造器中,通过super语句调用父类的构造方法
在子类中访问父类被屏蔽的方法和属性
注意:只能在构造方法或实例方法内使用super关键字,而在静态方法和静态代码块内是不能使用super关键字的
 
封装
封装:隐藏实现细节,提供简单的编程接口。
封装优点:便于使用者正确、方便和使用;体现系统间  松散耦合关系,提高软件的可重用性;降低大型系统的构建风险 


修饰符访问权限:




  
多态
多态:相同行为不同实现。
子类在对父类的方法进行重写的过程中,不同的子类可以给出不同的实现版本。
动态绑定:主要特征体现在其既有继承又有重写 其中父类的引用可以指向子类对象但不能有子类的引用指向父类(内存叠加)
多态绑定-----接口的引用指向实现接口的对象
当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但这些对于A系统来说是透明的。
对象造型(将子类对象交给父类型的引用)
Java语言允许引用变量转型:
如果把引用变量转换为子类型,则称为向下转型(需要强转)
如果把引用变量转换为父类型,则称为向上转型(子对象可以看做父对象)
注意:两种类型不存在继承关系,那么Java编译器不允许转型。
 
接口
接口:其定义一组公共方法由所需要提供这些功能的类共同实现
implements关键字是实现接口
interfac关键字是定义接口
是一种约定(实现了接口就必须要重写接口中所有的抽象方法)
代表一种能力(实现了接口,就具备了接口所描述的能力)
代表一种角色(一个类可以实现很多个接口(扮演多种角色),一个接口也可以被很多个类实现(一个角色可以由多个类扮演))
接口的修饰符只能是public static final ,接口里面的方法只能为抽象方法,即没有方法体得存在其可以不写abstract 方法的修饰符只能是public 
接口与抽象的比较
1、接口比抽象类更抽象,所以在使用上比抽象类更灵活
2、优先使用接口而不是抽象类
3、接口中的变量都是常量
4、接口中的方法都是公开的抽象方法
5、常量接口是接口最不正确的使用方式,接口中应该只定义方法
接口隔离原则:接口要小而专,绝不是大而全
抽象类
abstract 关键字
在一个实际的对象里是不可能存在不知道的具体行为,所有抽象方法必须在抽象类中进行声明
抽象类不能实例化,抽象类就是拿给其他类去继承的
如果一个类有抽象方法,这个类必须被声明为抽象类
一个抽象类可以继承非抽象类,当一个子类继承抽象类时要么将子类该为抽象类,要么将抽象类得方法在子类中重新抒写一遍并且实现其方法,名称必须保持一致


设计原则
1. 单一职责原则(高内聚)
2. 开闭原则(抽象是关键;封装可变性)
3. 依赖倒转原则(面向接口编程)
4. 里氏代换原则(子类型可以替换父类型)
5. 接口隔离原则(接口要小而专)
6. 合成聚合复用原则(优先使用Has-A关系而不是Is-A关系复用代码)
7. 迪米特法则(低耦合)


  
0 0
原创粉丝点击