JAVA基础第四部分
1、Collection和Collections的区别
Collection是一个集合接口,提供对集合对象进行基本操作的通用接口方法。
Collections是针对集合类的一个包装类,它提供一系列静态方法实现对各种集合的搜索、排序以及线程安全化等操作。
2、数组有没有length()这个方法? String有没有length()这个方法
数组中没有length()这个方法,但是有length这个属性,用来表示数组的长度;String中有length()这个方法,用来的带字符串的长度。
3、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
Overload是重载的意思,表示同一个类中可以有多个名称相同的方法,但方法的参数列表各不相同(即参数个数或类型不同);
Override是覆盖/复写的意思,表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类中完全相同的方法覆盖父类该方法;
如果Overloaded的方法的参数列表不一样,返回类型可以不一样,反之则不能。
4、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?
TreeSet依靠的是Comparable来区分重复数据,HashSet依靠HashCode()、equals()来区分重复数据。
5、try{}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后
会执行,在return之前
6、int和Integer有什么区别
1)Integer是int的包装类,int是Java的一种基本数据类型;
2)Integer变量必须实例化后才能使用,int变量不需;
3)Integer实际是对象的引用,int是直接存储数值;
4)Integer的默认值是null,int的默认值是0。
7、JDK和JRE的区别是什么?
JDK(Java Development Kit)主要面向开发人员,它提供了Java的开发环境和运行环境
JRE(Java Runtime Environment)主要面向程序使用者,只提供了Java的运行环境
8、什么是值传递和引用传递?
值传递:在方法调用过程中,实参把它的实际参数传递给形参,此传递过程就是将实参的值复制一份传递到函数中,这样函数中对该值进行操作将不会影响实参的值。该方法在传递大量数据时,运行效率会特别低。
引用传递:弥补值传递不足,在方法执行过程中,形参和实参的内容不同,指向同一块内存地址,也就是操作的源数据,因此方法执行会影响到实际对象。
PS:基本数据类型传值,引用类型传引用,String、Integer、Double等为不可变类型(immutable),可理解为传值
9、HashMap和Hashtable有什么区别?
详见第一部分
10、HashSet和TreeSet有什么区别?
1) HashSet保存数据是无序的,TreeSet保存的数据是有序的;
2) TreeSet依靠的是Comparable来区分重复数据,HashSet依靠HashCode()、equals()来区分重复数据。
11、JVM的永久代中会发生垃圾回收么?
会发生垃圾回收,但自己没有垃圾收集器,是和老年代一起回收。常量池中的常量,无用的类信息,没有引用就可以被回收,无用的类回收,需要满足三个条件:该类的实例都被回收;加载该类的classLoader已经被回收;该类在任意地方无法通过反射来实例化一个对象。
12、Java中的两种异常类型是什么?他们有什么区别?
Error和Exception。
13、异常处理的时候,finally代码块的重要性是什么?
不管是否异常,均会执行finally代码块中代码,经常被用在需要释放资源的情况下。
- 垃圾回收的优点和原理。并考虑2种回收机制。
Java程序的垃圾回收机制使得程序员在编写程序时不需要考虑内存管理,该机制可以有效的防止内存泄漏和有效内存使用。
分代收集:JVM根据不同对象的生命周期划分为年轻代、老年代和永久代,采用不同的回收方法
标记-清除:分为“标记”与“清除”两个阶段。
14、final,finally,finalize的区别。
final是用于声明属性、方法和类,分别表示属性不可变、方法不可复写、类不可继承;
finally是异常处理的一部分,不管是否异常,finally语句块中的代码最终都会执行;
finalize是垃圾收集器执行的时候调用的方法。
15、请说出你所知道的线程同步的方法。
1) Synchronized关键字:对方法和代码块加锁;
2) wait和notif/notifyAll方法:利用wait()使一个线程处于等待并释放所持有对象的lock,利用notif()/notifyAll()唤醒一个/所有处于等待装袋的线程;
3) Lock接口:通过一些方法实现多线程同步,如:lock()阻塞锁、trylock()非阻塞锁。
16、JSP和Servlet有哪些相同点和不同点,联系是什么?
相同点:JSP可以看成一个特殊的Servlet,是对Servlet的扩展,JSP能完成的工作,使用Servlet也能完成。
不同点:Servlet的实现是在Java语言中嵌入HTML代码,而JSP是在HTML中嵌入Java代码;Servlet位于MVC设计模式的控制层,JSP位于视图层;Servlet中没有内置对象,JSP可以通过HttpServletRequest对象、HttpServletResponse对象以及Httpservlet对象得到。