一、对象
1、面向对象:所有皆对象,程序是对象的组合,都有自己的存储空间,同类型能接收相同消息,类就是相同属性的事务总称
2、利用访问控制避免接触不该接触的,通过接口了解如何使用而不需要知道具体实现
3、类的相互嵌套引出了“组织”,也就是类包含类
4、继承实现代码复用,达到可扩展
5、多态的动态绑定在运行期才知道具体调用(向上转型),抽象类不能实现,抽象方法只能在抽象类中,且子类需实现它除非子类也是抽象类
6、容器只能存储对象,所有对象的顶级都是Object
7、GC解决内存释放
8、异常处理解决错误
9、多线程解决并行运算
10、保存位置:寄存器、堆、栈、静态区域、常量存储、硬盘或流
11、应用:创建(new),变量,基本类型(八种),数组,作用域(花括号),类创建(class)
12、变量:成员变量/全局变量(堆中,因为对象在堆中)和本地变量/局部变量(基础类型在栈,对象在堆),局部变量不可用修饰符也不会自动初始化也不可用static
13、方法:返回类型 方法名(){}
14、包和引入:包(package)解决了类型冲突,引入(import)提供其他类的引用方式
15、静态:static类型的数据或方法不属于某一个对象,共用一片内存
二、程序流程
1、运算符多数只能修饰基础类型,除了“=”,“==”,“!=”,String还支持“+”,“+=”
2、普通算术运算符、一元运算符、自动增减、关系运算符、逻辑运算符(短路)、移位运算(<<,<<<)、三元运算符(if-else)、自动向高位转型
3、if-else、while、do-while、for、break、continue、switch-case(break,default)
三、程序初始化
1、构造器:没有返回值,当存在有参的构造器则系统不会有默认无参构造器(即不能直接new无参的对象)
2、this:指向当前对象,多用于构造器间调用
3、static:依赖于类而不是对象,没有this
static变量/代码块:内存中只有一份,创建对象时最先加载,不能为局部变量
static方法:static方法不可调非static方法/变量,相反则可以
4、final:会对变量,方法,类进行优化,提高性能,多线程下安全,编译期绑定
final变量:需赋初始值(声明时或者构造器中),修饰变成常量,若修饰对象只是引用为常量,对象属性值仍可变,接口中变量都final
final方法:不能被重写(private方法默认会加上final)
final类:不能被继承(该类方法也就默认为final)
5、abstract:
abstract方法:必须在abstract类中,没有方法体(interface中方法都是)
abstract类:不能被new,内部可以有非abstract方法
6、finalize:GC回收前调用的方法,强行执行回收(System.gc())
7、重载:参数个数、参数类型、不同类型下参数顺序(跟返回值或权限无关),子类和父类之间也可以形成
四、访问控制
1、public、protected、friendly、private
2、class不能用private或者protected(内部类除外)
3、perr()和assert()断言测试
五、继承
1、继承中重写子类返回值也要一样,修饰符范围要更大,static和final的不能被继承
2、子类父类定义相同的字段,父类的会隐藏,可用super()调用
3、子类可以调用父类非private的属性或者方法
六、多态
1、三条件:继承、重写和向上转型
2、内部类实例化用 OutClass.InClass test = new OutClass.InClass()
七、集合
1、Collection -- List -- ArrayList、LindedList
Set -- HashSet、TreeSet
Map -- HashMap、TreeMap、HashTable
2、排序:
Comparable:Person implements Comparable,Collections.sort(list)
Comparator:PeopleComparator implement Comparator,Collections.sort(list,new PeopleComparator())
八、异常
1、Throwable -- Error:Error是系统级别错误,是不可预测的
Exception -- Checked Exception:可检查异常,除了RuntimeException及其子类外都是,在程序中显式catch或者throws
Unchecked Exception:不可检查异常,RuntimeException及其子类外都是,不需在程序中显式处理
2、常见异常:NullPointerException、ClassNotfoundException、IOException、ClassCastException、FileNotFoundException、IndexOutOfBoundsException、SQLException