基础回顾_2

1.string 和 stringbulider的区别?

	String 字符串常量
    StringBuffer 字符串变量(线程安全)
    StringBuilder 字符串变量(非线程安全)

 String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响.

StringBuffer每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用  StringBuffer ,特别是字符串对象经常改变的情况下。

StringBuilder 该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)

参考链接:
https://blog.csdn.net/rmn190/article/details/1492013

2.error和exception的区别?

Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。
Exception(异常)表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。

3.乐观锁和悲观锁?

 乐观锁:总是认为不会产生并发问题,每次去取数据的时候总认为不会有其他线程对数据进行修改,因此不会上锁
 悲观锁: 总是假设最坏的情况,每次取数据时都认为其他线程会修改,所以都会加锁(读锁、写锁、行锁等),当其他线程想要访问数据时,都需要阻塞挂起。

4.final、finally、finalize的区别?

final用于修饰类、成员变量和成员方法。
final修饰的类,不能被继承(String、StringBuilder、StringBuffer、Math,不可变类),其中所有的方法都不能被重写.
所以不能同时用 abstract和final修饰类(abstract修饰的类是抽象类,抽象类是用于被子类继承的,和final起相反的作用);
Final修饰的方法不能被重写,但是子类可以用父类中final修饰的方法;
Final修饰的成员变量是不可变的,如果成员变量是基本数据类型,初始化之后成员变量的值不能被改变,如果成员变量是引用类型,那么它只能指向初始化时指向的那个对象,不能再指向别的对象,但是对象当中的内容是允许改变的。

finally: 通常和try catch搭配使用,保证不管有没有发生异常,资源都能够被释放(释放连接、关闭IO流)。
finalize是object类中的一个方法,子类可以重写finalize()方法实现对资源的回收


参考链接:
https://blog.csdn.net/Beixiaozhang/article/details/52955862

5.forward和redrect的区别;

		本质区别:请求转发是一次请求,一次响应.  重定向是两次请求两次响应.
		 转发的特点:forward
		1. 转发地址栏路径不变
		2. 转发只能访问当前服务器下的资源
		3. 转发是一次请求,可以使用request对象来共享数据
		
		重定向的特点:redirect
		4. 地址栏发生变化
		5. 重定向可以访问其他站点(服务器)的资源
		6. 重定向是两次请求。不能使用request对象来共享数据
		![在这里插入图片描述](https://img-blog.csdn.net/20181021014300345?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FIZWlNYW9aaQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值