Java小知识(八)

Collection主要的子接口:
List:可以存放重复内容;
Set:不能存放重复内容,所有重复内容靠hashCode()和equals()两个区分;
Queue:队列接口;
SortedSet:可以对集合中的数据进行排序。

Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value。Map接口提供3种集合的视图,Map的内容可以被当做一组key集合,一组value集合,或者一组key-value映射。

 

DBMS中事务有4个特性,分别是原子性,一致性,隔离性,持久性。
原子性:事务是一组不可分割的操作单元,这组单元要么同时成功要么同时失败(由DBMS的事务管理子系统来实现)
一致性:事务前后的数据完整性要保持一致(由DBMS的完整性子系统执行测试任务)
隔离性:多个用户的事务之间不要相互影响,要相互隔离(由DBMS的并发控制子系统实现)
持久性:一个事务一旦提交,那么它对数据库产生的影响就是永久的不可逆的,如果后面再回滚或者异常,都不会影响已提交的事务(由DBMS的恢复管理子系统实现的)

 

String,StringBuffer,StringBuilder的区别:
java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,它们之间的区别也是经常在面试中会问到的问题。现在总结一下,看看它们的不同与相同:
①可变与不可变:
String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道String对象是不可变的。private final char value[];String为不可变对象,一旦被创建,就不能修改它的值。对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去。
StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,如下就是,可知这两种对象都是可变的。char[] value;StringBuffer:是一个可变对象,当对它进行修改的时候不会像String那样重新建立对象,它只能通过构造函数来建立,如:StringBuffer sb=new StringBuffer();不能通过赋值符号对它进行赋值,如:sb="welcome to here!";//error 对象被建立以后,在内存中就会分配内存空间,并初始保存一个null。向StringBuffer中赋值的时候可以通过它的append方法。sb.append("hello");
②是否多线程安全
String中的对象时不可变的,也就可以理解为常量,显然线程安全。
AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。
StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。看如下源代码:
public synchronized StringBuffer reverse(){
    super.reverse();
    return this; 
}
public int indexOf(String str){
    return indexOf(str,0);
}
StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。
③StringBuilder与StringBuffer共同点
StringBuilder与StringBuffer有公共父类AbstractStringBuilder(抽象类)。抽象类与接口的其中一个区别就是:抽象类中可以定义一些子类的公共方法,子类只需要增加新的功能,不需要重复增加新的功能,不需要重复I写以及存在的方法;而接口中只是对方法的申明和常量的定义。
StringBuilder、StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如suoer.append(...)。只是StringBuffer会在方法上加synchronized关键字,进行同步。
最后,如果程序不是多线程的那么StringBuilder效率高于StringBuffer。
效率比较:String<StringBuffer<StringBuilder,但是在String S1="This is only a"+"simple"+"test"时,String效率最高。

 

Java语言中的异常处理包括声明异常、抛出异常、捕获异常和处理异常四个环节。
 throw用于抛出异常;
throws关键字可以在方法上声明该方法要抛出的异常,然后在方法内部通过throw抛出异常对象;
try是用于检测被包住的语句块是否出现异常,如果有异常,则抛出异常,并执行catch语句;
catch用于捕获从try中抛出的异常并作出处理;
finally语句块是不管有没有出现异常都要执行的内容。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值