1.请说明String是基本的数据类型吗?
String是引用类型,并且被final修饰。
基本的数据类型:
1.整形:int,byte,short,long。
2.字符型:float,double。
3.逻辑:boolean.
4.浮点型:char。
并且当他被final修饰时,
1.当修饰类:该类不能够被继承
2.当修饰变量:能够重载,不能重写。即不可被修改。
为了节省空间,提高效率。我们应该采用StringBuffer类
说明一下String,Stringbuilder,Stringbuffer的区别
String 是字符串常量,所以他是不变的
Strigbuilder 不是不安全的,速度最快的。适用于单线程在字符缓冲区操作大量数据。
Stringbuffer 是安全的,速度比Stringbuilder稍慢。 适用于多线程在字符缓冲区操作大量数据。
2.请说明“ == ”比较的是什么?
1.如果比较的是两个对象,是基于内存引用的,看两个对象的内存引用是否指向相同(同一个对象)。成立则 True,否则False。
2.如果比较的是基本数据类型,比较其数值是否相等 即可。
PS:equals和2所说情况差不离。
3.请说明重载和重写的区别,相同参数,不同返回值类型能重载吗?
重载和重写都是实现多态的形式,前者是编译时的多态,后者是运行时的多态。 重载是发生在同一个类中,同名的方法具有不同的参数列表(参数类型不同,参数个数不同,或者两者皆有),即构成了重载。
重写是发生在子类和父类之间。要求子类被重写的方法比父类更好访问。并且要求具有相同的返回类型。而重载对返回值没有要求。
4.请问什么是死锁?
当两个或者两个以上的线程都在等待着对方执行完毕才能 继续往下执行,这样就形成了死锁。结果就是这些线程 陷入了无限等待之中。
例如:
当线程一锁定A的基础上,想对B加锁。同时线程二已经锁定了B,在此基础上,相对A加锁。双方只有等对方解锁后才能执行下一步。这样就构成了死锁。
5.请说明List,Set,Map 三个接口存取元素时,各有什么特点?
List以特定索引存取元素,可以重复。Set不能有重复元素,(用equals筛选重复元素)。Map储存键值对来映射,可以一对一,可以多对一。
Set和Map都有哈希存储和序列树两种实现方式,哈希存储理论时间复杂度为O(1)。而基于序列树的版本进行插入和删除操作时,会按照元素或者键构成序列树从而达到排序和去重的效果。