Java基础小结

1. 面向对象

面向对象 封装 实现业务的抽象,将相同的特征(属性和方法)封装成类
访问控制(修饰符),隐匿实现细节 public:包外可访问
protected:包内或子类可访问
default:仅包内访问
private:仅当前类可访问
继承 继承父类并扩展父类特征行为
接口与抽象类:一个类可以实现多个接口但只能继承一个抽象类
多态 存在的三个必要条件:继承、重写、父类引用指向子类对象 重载(编译时多态):同一个类中,方法名字相同,参数类型或个数不同,不关注返回值类型
重写(运行时多态):子类对父类方法重写,返回值和参数类型相同

2. 数据类型

基础数据类型(byte short int long float double char boolean )

和引用类(Byte Integer Long String Boolean)

封装数据类型为引用类,提供类方法

equals与 ==

equals:可以重写equals方法,用于判断两个对象是否相同,不要求为同一个对象

==:比较两个数值或引用变量是否相等,比较对象时判断两个对象是否为同一对象
引用类与基础数据类型相互转换时需要拆箱和装箱
引用类与基础数据类型大小和速度不同;引用类的默认值为null,int默认值为0

3. 静态关键字static

静态变量static:静态变量为类成员变量在类初始化时分配内存空间且仅分配一次,普通成员变量在类实例化时分配内存空间  Java类初始化顺序 1. 父类静态成员和static块 静态初始化
2. 子类静态成员和static块
3. 父类普通成员和非static块 父类初始化
4. 父类构造函数 
5. 子类普通成员变量和非static块  子类初始化
6. 子类构造函数

4. String相关操作

String
StringBuffer
StringBuilder
执行速度:StringBuilder>StringBuffer>String(String为字符串常量,其他两个为字符串变量)
应用场景 String适用于少量字符串操作
StringBuffer适用于多线程大量字符串操作
StringBuilder适用于单线程大量字符串操作
StringBuilder非线程安全,StringBuffer线程安全

5. 反射

反射(java.lang.reflect):必须取得代表字节码的Class Java中Class类 Class类是描述类的类,封装了Method、Field、Constructor等属性,每个类都有一个不变的Classs类型对象
所有的java类都继承了Object,Object的方法getclass()用来取得该类已经被实例化了的对象的该类的引用,这个引用指向的是Class类的对象
Class类的对象是在当各类被调入时,由 Java 虚拟机自动创建,或通过类装载器中的 defineClass 方法生成
java反射是指在运行状态中,对于任何一个类都可以知道该类的所有属性和方法,这种动态的获取信息及调用对象的方式称为反射机制
获取Class对象的三种方式 1. Object--getClass(),通过已知对象获取
2. 任何数据类型(包括基本数据类型)都有一个静态的Class属性,通过类名.class获取
3. 通过Class类的静态方法:Class.forName(String className)
Class.forName()与ClassLoader:两者均可用于对类进行加载 Class.forName(ClassName); Class.forName除将class文件加载到jvm中外,还会对类进行解释,执行类中的static块
ClassLoader loader = ClassLoader.getSystemClassLoader();    Class class =  loader.loadClass(ClassName); classloader仅将class文件加载到jvm中,static中的内容只有在实例化(newinstance)时才会执行

6. 异常

异常(Throwable顶层父类) Error(无法被处理的错误,如内存溢出)和Exception(可以被程序处理的错误);除了Error和RuntimeException外的异常均为被检查的异常(CheckedException,编译异常)
try catch finally |throw 无论是否有异常,finally中的代码一定会被执行
finally代码块中最好不要包含return,程序正常执行时finally中return会在try catch中return前面执行

7. final|finally|finalize对比

final:修饰成员变量类和方法,被修饰的成员变量不可改变,方法不能被重写,类不能被继承
finally:异常处理关键字
finalize:用于类的回收,但不保证垃圾回收器的调用时间,也不保证执行顺序,不常用

posted @ 2019-06-03 13:25  北辰Root  阅读(149)  评论(0编辑  收藏  举报