Java笔试重点:String、Integer、异常处理与集合框架解析

需积分: 3 2 下载量 162 浏览量 更新于2024-09-18 收藏 41KB TXT 举报
"Java笔试题小结,涵盖了Java EE的相关知识,包括数据类型、字符串处理、自动装箱拆箱、异常处理、Servlet、集合类、并发操作等核心概念。" 在Java编程中,掌握基本的数据类型是至关重要的。Java提供了八种原始数据类型:byte、short、int、long、float、double、boolean以及char。它们各有不同的存储大小和使用场景。例如,int用于整数计算,而float和double则适用于浮点数运算。在某些场景下,为了提高代码的可读性和易维护性,可以使用String类处理字符串,但需要注意String是不可变的,如果需要频繁修改字符串,应使用StringBuilder或StringBuffer。 Java提供了自动装箱(boxing)和拆箱(unboxing)功能,将基本类型与对应的包装类进行转换。例如,int可以自动转换为Integer,反之亦然。但是,需要注意的是,自动装箱可能会产生额外的对象,可能导致内存效率下降,因此在性能敏感的代码中应谨慎使用。 在处理字符串时,String和StringBuffer有显著的区别。String是不可变的,每次修改都会创建新的对象,而StringBuffer是可变的,可以在原对象上进行修改,适合于大量拼接操作。对于少量操作,String的效率更高,但频繁操作时,StringBuffer更优。 异常处理是Java中的关键部分。Java通过try-catch-finally语句块来捕获和处理异常。finally块确保无论是否发生异常,其中的代码总会被执行。此外,异常分为检查型异常(checked exceptions)和运行时异常(runtime exceptions),前者必须被显式捕获,后者可以不捕获。 Servlet是一种用Java编写的服务器端程序,用于扩展Web服务器的功能,处理HTTP请求。它定义了init、service和destroy三个方法,分别对应初始化、处理请求和服务销毁。相比传统的CGI(Common Gateway Interface),Servlet具有更高的效率和更好的可移植性。 在Java集合框架中,ArrayList、Vector和LinkedList各有其特点。ArrayList和Vector都是基于数组实现的列表,ArrayList是非线程安全的,适合于随机访问;Vector则是线程安全的,但在多线程环境下性能较低。LinkedList基于链表结构,适合于插入和删除操作,但随机访问性能较差。 Collection是所有集合接口的根接口,包括Set和List子接口。Collections工具类提供了一系列静态方法,用于对集合进行操作,如排序、查找、填充等。它也提供了线程安全的版本,如同步包装器类。 逻辑操作符"&"和"&&"之间的差异在于短路性质。"&"总是会执行两边的操作数,而"&&"在左侧操作数为false时不会评估右侧。 HashMap和Hashtable都是实现Map接口的类,用于存储键值对。HashMap允许null键和值,而Hashtable不允许,且Hashtable是线程安全的,HashMap不是。因此,在多线程环境下,如果需要线程安全,可以选择使用ConcurrentHashMap。 关键字final用于声明不可变的变量,finally确保代码块在任何情况下都会执行,而finalize是对象被垃圾收集器回收前调用的方法,用于释放资源。然而,依赖finalize进行资源清理并不推荐,应优先使用try-with-resources或手动关闭资源。 至于sleep()和wait(),两者都是线程控制的方法。sleep()使当前线程暂停指定的时间,不会释放锁,而wait()让线程等待直到其他线程唤醒它,通常在同步控制中使用,会释放持有的锁。