equals() hashcode() toString() clone() wait() notify()
String 不可变
stringbuild,stringbuffer可以变 stringbuffer 线程安全的 stringbuild 线程不安全
String 里面有个char[]数组 和hash值‘
因为char数组被final和private修饰 final不可继承 private不可被外部更改 所以不可变
为什么String是不可变的 https://blog.csdn.net/zhangjg_blog/article/details/18319521
就是一个父类可以被多个子类继承进行重写里面的方法
实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载
继承,封装,多态
int byte long short double float char boolean
1. java.lang.nullpointerexception 空指针异常
2. java.lang.classnotfoundexception 找不到类异常
3. java.lang.arrayindexoutofboundsexception 数组地址下标越界
不能 因为String被final修饰
值传递
list里面元素可以重复,set元素不重复。
list里面元素有序,set里面除了treemap元素都没序。
面向对象,就是继承,封装,多态。
反射就是在运行过程中,对于任意一个类和对象,都能知道这个类的所有属性和方法。
动态代理就是运行时动态生成代理类
动态代理有两种形式,一个是JDK原生的动态代理,通过接口实现。还有一个是cglib代理,通过继承当前的子类实现的。
因为反射可以自己获得运行时的类名,这样不仅代码上可以解耦合,更换数据库时的时候也不需要重新编译代码。
error一般是指与虚拟机相关的问题,程序本身无法处理,进行报错。
exception一般是程序可以处理的异常,可以捕获并进行处理。
如果重写equals 就是比较对象内容是否相同
如果没有重写,就是比较对象引用地址是否相同
用map的时候会取不到值
判断地址是否相等
JDK自带的动态代理,cglib动态代理
JDK是继承接口,cglib是通过继承父类来实现的
被static修饰的属性和方法可以直接被类名称调用,相当于全局变量
被final修饰的类不能被继承,被final修饰的方法不能被重写,被final修饰的变量是常量
不可以
static对象早已经创建好了,但是程序中的所有属性和方法必须在对象开辟堆内存后才能使用。
String str;
int i = Integer.parseInt(str);
string是一个类,不可变,也不可以被继承,内部有hashcode和一个value char数组。
把对象转换为字节序列的过程
把对象保存在硬盘上,在网络上传送对象的字节序列
创建一个对象输出流,然后包装其他类型的目标输出流
通过对象输出流的writeObject()方法写对象
创建一个对象输入流,然后包装其他类型的目标输入流
通过对象输入留的readObject()方法读取对象