2024年3月9日发(作者:)
1、 List和Set:有序性,可重复性
List中数据存放是有序的,按照存放的顺序存储,并且数据允许重复
Set中的数据是无序的,数据不允许重复
2、 ArrayList和Vector:安全性和效率
ArrayList是线程非安全的,但是ArrayList的执行效率要高于Vector
Vector实现了线程同步,是线程安全的,但是效率低,可以用于多线程编程
3、 HashMap和Hashtable:null键和null值,线程安全性和效率
HashMap中允许有一个null键和多个null值
Hashtable中不允许有null键和null值
Hashtable实现了同步,是线程安全的,可以用于多线程编程
HashMap是线程非安全的,执行效率要高于
4、 Collection和Collections:接口---帮助类
Collection是集合类的上级接口,继承与他的接口主要有Set和List
Collections是针对集合类的一个帮助类,提供一系列静态方法实现对各种集合的搜索、
排序、线程安全化等操作
5、 &和&&:条件1&/&&条件2
&是位运算符,表示按位与运算,条件1&条件2,若条件1不成立,还会判断条件2
&&是逻辑运算符,表示逻辑与(and),条件1&&条件2,若条件1不成立,则不会判断
条件2,可以避免空指针异常
6、 int和Integer
int是java的原始数据类型
Integer是int类型的封装类,提供了对int类型数据的常用操作方法
int是Integer类的原型
7、 final、finally和finalize
final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承
finally是异常处理语句结构的一部分,表示总是被执行
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,
可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等
8、 sleep()和wait():所属类不同
sleep()和wait()都可以让当前的线程处于休眠状态
sleep是线程类(Thread)中的方法,sleep可以让线程休眠指定时间,一旦时间结束,
线程会自动恢复
wait()是Object类中的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等
待此对象的等待锁定池,只有针对此对象发出notify方法或者notifyAll方法或本线程才
进入对象锁定池准备获得对象锁进入运行状态
9、 接口和抽象类
抽象类
语法:public abstract class GeneralDAO{
}
成分:变量,常量,用abstract修饰抽象方法,非抽象方法
继承实现:
非抽象类:继承(extends),重写抽象类中所有抽象方法
抽象类:继承(extends),可以重写也可以不重写方法
接口:接口不能继承也不能实现抽象类
其他:类只能单继承:一个子类只能继承一个父类
public class UserDAO extends GeneralDAO{ }
接口
语法:public interface IGeneral{
}
成分:常量,抽象方法(可用abstract,也可不用)
继承实现:
非抽象类:实现(implements ),重写接口中所有方法
抽象类:实现(implements),可以不重写接口中的方法
接口:继承(extends),不能重写父接口中的方法
其他:接口可以多实现:一个类可以同时实现多个接口
public class User implements IInterl,ITest{ }
共同点:
抽象类和接口都不能创建对象
如果想要创建抽象类(接口)的对象引用,只能够指向子类(实现类)的对象
抽象类(接口)的引用只能指向子类(实现类)的对象
抽象名 对象名 = new 子类名();
接口名 对象名 = new 实现类名();
如果我们直接通过抽象创建对象,我们需要在抽象类的构造器后面加上一对“{}”,
在“{}”中实现抽象类中所有的抽象方法
10、重写和重载
方法的重写
定义:子类覆盖父类中的方法
涉及到的类:父类和子类,两个或两个以上的类
方法名:子类方法名和父类方法名必须一致
返回类型:子类方法和父类方法返回类型必须一致
参数列表:子类方法和父类方法参数列表必须一致
访问权限:子类方法不能比父类方法更为严格
方法的重载
定义:在一个类中可以定义多个方法名相同的方法
涉及到的类:本类,一个类
方法名:多个方法名相同
返回类型:多个相同方法名的方法返回类型可以不相同
参数列表:多个方法的参数列表必须不同
访问权限:多个方法访问权限无关
11、String和StringBuffer
Java提供了String和StringBuffer两个类,可以用于储存和操作字符串,即包含多个字
符串的字符数据
String类提供的数值不可改变的字符串
StringBuffer类提供的字符串可以进行修改,StringBuffer用来动态构造字符串数据
12、StringBuilder和StringBuffer:安全性和性能
StringBuilder和StringBuffer都是用完善对String类型数据的操作,用法完全一致
区别:StringBuffer是线程安全的,可以用在多线程编程中,但是效率低于StringBuilder
StringBuilder是线程非安全的,但是执行效率高于StringBuffer
所以在不涉及到多线程编程的情况下,我们选用StringBuilder
13、错误(error)和异常(exception)
error表示恢复不是不可能但是很困难的情况下的一种严重问题。比如说内存溢出,不
可能指望程序能处理这样的情况
exception表示一种设计或实现问题,它表示如果程序运行正常,从不发发生的情况
14、运行时异常和一般异常:一般异常属于编译异常
运行时异常通常是在虚拟机运行代码过程中,由于所使用的数据不合法二导致的异常
常见的RuntimeException运行时异常如下:
ArithmeticException:数学计算异常
NullPointException:空指针异常
NegativeArraySizeException:负数组长度异常
ArrayOutOfBoundsException:数组索引越界异常
ClassNotFoundException:类文件未找到异常
ClassCastException:造型异常
常见的IOException异常,如下:
FileNotFoundException:文件未找到异常
EOFException:读写文件尾异常
MalformedURLException:URL格式错误异常
SocketException:Socket异常
一般异常:java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不是要
求必须声明抛出未被捕获的运行时异常
15、Request跳转和Response跳转(forward和redirect):重定向和请求跳转
forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内
容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从
哪儿来的,所以它的地址栏中还是原来的地址
redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般
来说浏览器会用刚才请求的所 有参数重新请求,所以 session,request参数都可以获取


发布评论