2.Java面试题(二)

1.什么是通配符
答:泛型通配符是在泛型的使用中,用来表示对泛型类型进行类型范围限定的特殊符号。
这里用通配符就是为了表明要输入的类型要在一定范围之内,
说的通俗一些其实就是一个类型取值范围,而最大值是Object这是确定的。

2.数组是不是可以使用泛型
答:数组必须明确知道内部元素的类型(因为数组在内存中是一段连续的空间,必须明确类型分配空间),而且编译器会”记住“这个类型,每次往数组里插入新元素都会进行类型检查,不匹配会抛出java.lang.ArrayStoreException错误。
原因就是Java的泛型是通过类型擦除(type erasure)来实现的。
3.什么是泛型擦除
答:什么是类型擦除呢,简单来说Java在编译期间,所有的泛型信息都会被擦除掉。

4.型里面extends,super是什么意思
答:泛型通配符的分类
(1)<?>:无限通配符,可以在?中放入里放入任何引用数据类型,用来接收任意引用数据类型。


(2)<? extends E>:这个表明的是通配符的上界,通俗讲就如同取值范围中的负无穷到E,即小于等

于E的所有类型, 因为E是最大的类型(最大可以达到Object),表明可以输入所有的E的子类和E,等下

会进行细致的讲解。



(3)<? super E>:这个表明的是通配符的下界,通俗讲其取值范围就是E到最大值Object(因为Object

是所有类的基类),就是大于等于E,小于等于Object类。

 

5.如何泛型编写一个泛型方法,接受泛型参数,返回泛型类型。

答:编写泛型方法并不困难,你需要用泛型类型来替代原始类型,比如使用T, E or K,V等被广泛认

可的类型占位符。最简单的情况下,一个泛型方法可能会像这样:

public V put(K key, V value) {

return cache.put(key, value);

}

6.泛型和原始类型是否可以一起使用
答:不可以,必须使用原始类型的包装类。
7.常见的编译时异常和运行时异常
答:常见的编译时异常:
(1)FileNotFoundException:文件不可见异常
(2)ClassNotFoundException:类找不到异常
(3)SQLException:SQL异常
(4)NoSuchFieldException
(5)NoSuchMethodException
(6)ParseException
常见的运行时异常:

(1)NullPointerException:空指针异常
(2)ArithmeticException:算数异常
(3)ClassCastException:类型转换异常
(4)ArrayIndexOutOfBoundsException:数组下标越界异常
(5)StringIndexOutOfBoundsException:字符串下标越界异常
8.正则表达式是用来字符串匹配的,用match()方法。

9.接口和抽象类的区别
答:(1)抽象类可以有构造方法,接口中不能有构造方法。

(2)抽象类中可以有普通成员变量,接口中没有普通成员变量

(3)抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

(4)抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,

但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。


(5)抽象类中可以包含静态方法,接口中不能包含静态方法

(6)抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口

中定义的变量只能是publicstatic final类型,并且默认即为publicstatic final类型。


(7)一个类可以实现多个接口,但只能继承一个抽象类。
10.什么是内部类,有什么用

答:在很多情况下,类被定义成一个独立的程序单元,但是有时候也会把一个类放在另一个类的内部定

义,这个定义在其他类内部的类就称为内部类。

   作用:java通过内部类加上接口,可以很好的实现多继承的效果。
原文地址:https://www.cnblogs.com/liqinzhen/p/12800929.html