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