java的八种数据类型
- byte 1字节
- short 2字节
- int 4字节
- long 8字节
- char 2字节
- float 4字节
- double 8字节
- boolean 1字节
RESTful风格
RESTful简单来说:URL用来访问定位资源,根据HTTP动词(POST,GET,DELETE,PUT,HEAD)描述操作资源,看到http method就知道要干什么,看http status code知道结果,如果一个架构符合REST原则,就称为RESTful风格架构
重写与重载
- 重载就是同一个类,多个同名方法根据不同的传参执行不同的逻辑处理;
- 重写是子类对父类允许访问的方法的重新改造,修改内部逻辑;
- 重载发生在编译期间,方法名必须相同,参数顺序、参数类型、参数个数必须不同,方法返回值和访问修饰符可以相同;
- 重写发生在运行期间,方法名必须相同,返回值类型与参数列表必须相同,抛出的异常范围小于父类,访问修饰符范围大于等于父类。
按值传递与按引用传递
- 形参是基本数据类型:按值传递是指调用时实参把值传递给对应的形参,形参使用该值初始化自己的存储单元,是两个不同的存储单元,对形参的修改不影响到实参。由于直接复制,在数据量非常大的情况下,运行效率就变低。
- 形参是引用数据类型:方法调用时,实参是对象实例或者数组,实参与形参指向同一地址,对形参的修改实际就是在对实参进行操作。
Java中抽象与接口
- 相同点
- 都不能被实例化
- 接口的实现类或抽象的子类只有实现方法才能被实例化
- 不同点
- 接口只有定义,无方法的具体实现,抽象类可以进行定义与实现
- 一个类可以实现多个接口,但只能继承一个抽象类
- 接口强调功能实现,抽象强调从属关系
- 接口成员变量默认public static final,必须赋值且无法修改;抽象成员变量默认default,可重新定义和赋值
Comparable和Comparator
Comparable是排序接口,若一个类实现了该接口,必须重写compareTo方法,相当于内部比较器
Comparator是比较器接口,需要控制某个类的次序,可以使用该接口,相当于外部比较器
error和exception
error属于编译期的错误,发生在JVM层面上的,程序员是不能改变和处理的。
exception是运行期的错误,多是代码逻辑层面问题,程序员可捕捉并进行异常处理
java的泛型
泛型可认为是参数化类型,将类型当作参数进行传递。java泛型属于伪泛型,泛型信息存在代码编译阶段,在进入JVM前,与泛型相关的信息会做类型擦除操作。类型擦除能提高程序的简洁性和可读性,高度兼容,同时提供安全检测功能,但是抹掉了很多继承相关的特性。
String类
String类是final类
- 实现字符串池
- 实现线程安全
- 实现hashcode不可变性
被final修饰的类不能被继承,被final修饰的方法不能被重写,被final修饰的变量需要进行初始化操作
hash解决冲突的方法优缺点
- 开放定址法
- 线性探测:冲突发生时,顺序查看表中下一单元,直到找出一个空单元或查遍全表。
- 二次探查:冲突发生时,在表的左右进行跳跃式探测,比较灵活
- 伪随机探测
- 链地址法
处理简单,查找时间短,链表长度动态变化,指针需要额外的空间,故当结点规模较小时,开放定址法较为节省空间 - 再哈希法