复习1
一. 环境配置
二.java如何实现跨平台操作
三.java语言的分类
四.java基础
1.java数据类型的分类
1.算术运算符 + - * / % ++ --2.关系运算符 == ! = > >= < <= 返回boolean值3.boolean逻辑运算符(运算符两边都是boolean类型) & | ! ^ && ||&和&&结果相同,但是步骤不同|和||结果相同,但是步骤不同&&和||具有短路功能4.位运算符 & | ~ ^ << >> >>>5.赋值运算符 = ,+=, -=,*=,/=,%=6.条件运算符(三目运算符) boolean?a:b 返回一个具体的值4.分支语句a.if() { } else if(){ }else{ }b.switch(变量){case 值1:代码;break;……default:代码;}(变量指byte,short,int,char,String(jdk1.7),枚举enmu类型)5.循环语句a.do{代码块;}while(boolean)b.while(boolean){代码块;}c.for(循环开始条件;循环满足的条件;变化的条件){代码块;}6.数组数据类型[] 引用名 = new 数据类型[数组长度];int[] a=new int[10];//初始化为10个0Student[] s=new Student[5];//初始化为5个nullint[] a={1,2,3};int[] a=new int[]{3,4,5};二维数组:int[][] a=new int[][]{{1,2},{2,3,4}};7.方法方法时一段可以重复使用的代码块方法的声明[权限修饰符 public| protected|private|default] [static] [synchronized] void|数据类型方法名称([数据类型 形式参数...]) [throws 异常]{//方法体}方法的调用同一个类中:方法名([实际参数...])不同类中:非静态方法 对象引用.方法名([实际参数...])静态方法 类名.方法名([实际参数...])方法的重载overload:在同一个类中,方法的名称相同,参数列表不同(参数类型|个数|顺序),构成重载方法的重写override:在继承或者实现关系中,方法名称和参数列表返回值类型和父类完全相同,方法体不同静态方法不能被重写子类重写的方法不能缩小父类方法的权限子类方法声明了异常,父类方法必须声明可变参数 方法中声明的可变参数要放在参数列表的最后一位8.字符串equals和==equals比较内容(String类重写了equals方法) ==比较地址区分null和空字符串
五.面向对象编程 Object Oriented Programming(OOP)
1.面向对象的三大特征
封装
把客观存在的一些事物抽象为类的过程
类: 属性 方法 内部类
安全,功能解耦,方便维护
继承
子类extends父类
子类继承父类的属性和方法并且可以覆盖父类的属性和重写父类的方法
还可以扩展自己的方法
多态
同一个类的不同对象,调用相同的方法实现不同的行为
多态实现的必要条件:
a.继承关系或实现关系
b.方法的重写
c.父类声明子类对象
实现原理:运行时期类型判定rtti,采用方法的后期(动态)绑定机制
简化代码,便于功能扩展
2.this关键字(与对象相关)
this- 表示的是当前对象
使用在类的普通方法中,使用this.属性或this.方法
使用在类的构造方法中,this(实际参数)调用其他构造方法,必须放在第一行而且只有一个
使用在内部类中,外部类名.this 生成对外部类对象的引用
3.static关键字(与类相关)
static{
//静态代码块
}
声明方法和属性 可以直接使用类名.属性 类名.方法()来调用
静态的代码块和静态属性只会被初始化一次
静态的方法不能使用非静态的属性 不能调用非静态的方法
非静态的方法可以使用静态的属性 可以调用静态的方法
4.构造方法
创建对象时调用的方法就是构造方法
构造方法的声明
[权限修饰符] 类名([形式参数...]){
}
每个类默认都有一个无参数的构造方法,一旦自定义了构造方法,默认的就不会被创建
创建对象时调用构造方法 new 类名([实际参数...])
构造方法可以被重载不可以被重写
5.super关键字
super表示继承关系中的父类
super.属性 使用父类的属性
super.方法() 调用父类的方法
6.初始化
类初始化:
只在第一次使用类时初始化一次
初始化的是静态声明的属性 执行静态代码块
对象初始化:
每次创建对象,都会初始化一次
初始化的是非静态的属性 执行非静态的代码块{}
初始化顺序:
a.先静态后非静态
b.先声明后赋值
c.先属性后构造方法
d.先父类后子类
父类静态->子类静态->父类非静态->父类构造方法->子类非静态->子类构造方法
六.接口、抽象类、内部类
1.接口
interface声明
声明属性 属性都是public static final声明的
声明方法
抽象方法 没有方法体 [public abstract] [修饰符] 返回值类型 方法名称(形式参数)[throwsException];
jdk1.8之后 default和static方法 包含方法体
不能创建对象
2.抽象类
abstract class 声明
属性
方法:具体的方法
抽象方法
不能创建对象
3.内部类
静态内部类
static修饰的类
可以访问外部类的静态属性和方法
创建对象: new 外部类.内部类()
常规内部类
可以访问外部类的所有属性和方法
使用外部类对象:外部类.this
创建对象: 外部类对象.new 内部类()
常规内部类默认有一个构造方法,参数为外部类对象
内部类生成的class类名:外部类$内部类
匿名内部类
没有名字的内部类
new 类|抽象类|接口(){
@Override
重写方法
};
局部内部类
在方法中定义的内部类
匿名内部类和局部内部类如果使用局部变量时,在内部类中不能对该变量进行修改
一般把局部变量声明成final的
七.异常
1.异常概念:程序中的一些意外导致指令中断的一种事件
2.java异常的分类
Throwable ->java异常类的父类
|
|__Error jvm的错误异常
|__Exception
|
|__编译期异常 :执行中的异常,必须要处理
1.在方法中声明异常:
方法名称([参数]) throws 异常类的名字
将异常信息跑出了方法外,在调用这个方法的地方还是要处理该异常
(通常在main方法中不能再throws 了)
2.try{
//可能会出现异常的代码
}catch(异常类名字 e){
//出现异常之后执行的代码
}...finally{
//不管try中的代码块有没有抛出异常必须执行的代码块
}异常处理后,catch之后的程序会正常执行,不会中断
|
|__RuntimeException 运行期异常(程序运行时出现的异常)
3.自定义异常
八.RTTI(run-time type identification运行时类型判定)
1.RTTI:在程序运行的过程中识别对象的类型
在java中每一个类都有与之对应的Class对象来表述这个对象的类型
一个类的所有对象共用一个Class对象
2.Class类:用来描述所有java类的类
属性:类的构造方法、成员属性、方法
3.Class对象:每一个java的类都有一个Class的对象保存在java类的.class文件中
4.Class对象的作用:a.分析类的结构
b.创建类的对象:newInstance()方法创建对象,调用无参数的构造方法
c.实现反射
5.获取Class对象:
a.类名.class不会初始化类
b.Class.forName("类名")初始化静态属性和静态代码块
c.对象.getClass() 因为创建了对象,所以都被初始化了
6.类加载器 ClassLoader
用来加载.class的字节码 文件到内存中
一旦加载类,就会在堆内存中创建该类的Class对象
由类加载器对象和.class文件来唯一的确定一个Class对象
一个类只能被同一个类加载器加载一次
可以使用Class对象.getClassLoader()获取加载该类的类加载器
九.集合类库
十.JDBC
十一.IO
十二.多线程