java面试题目 1.String S=new String("xyz”);创建了几个stringobject?是否可以继承String类? 答:String创建对象有两种情况: 第一种:如果String常量池中已经创建了“xyz”,则不会继续创建,此时只创建了一个对象new String(“xyz”) 第二种:如果String常量池中没有创建“xyz”,则会创建两个对象,一个对象的值是“xyz”,一个对象new String(“xyz”)。 String类被final修饰不可被继承。 Java面试题目涵盖了许多核心概念,包括字符串对象的创建、StringBuffer与StringBuilder的区别、Error与Exception的差异、Java序列化、JVM加载Class文件的机制、ServletAPI中的forward()与redirect()的区别,以及HttpServletRequest中getAttribute()与getParameter()的差异。下面我们将逐一详细探讨这些知识点。 1. **字符串对象创建**: Java中的`String`类被`final`修饰,不可被继承,以确保其不可变性。创建`String`对象时,有两种情况: - 如果字符串常量池中已经存在"xyz",则不会创建新对象,只有一个`String`对象。 - 若池中不存在,将创建两个对象,一个是池中的"xyz",另一个是`new String("xyz")`。 2. **StringBuffer与StringBuilder**: - `StringBuffer`是线程安全的,因为它的方法是同步的,适合多线程环境下的字符串操作。 - `StringBuilder`没有同步机制,因此在单线程环境中性能优于`StringBuffer`,大约快10%-15%。 3. **Error与Exception**: - `Error`通常表示系统级的错误,比如`OutOfMemoryError`,它们是程序无法恢复的严重问题。 - `Exception`是程序设计或实现时可能出现的问题,比如空指针异常,程序正常运行时应当避免这类异常的发生。 4. **Java序列化**: - Java序列化是将对象的状态转换为可持久化或传输的格式。`Serializable`接口是实现序列化的标志,当一个类实现这个接口,它的对象就可以被序列化和反序列化。 5. **JVM加载Class文件**: - JVM加载Class文件分为三个步骤:装载、连接(包括检查、准备和解析)和初始化。初始化阶段是为静态变量分配存储空间并执行静态代码块。 6. **ServletAPI中的forward()与redirect()**: - `forward()`是服务器内部转发,地址栏不会改变,可以共享`request`数据,效率较高。 - `redirect()`是客户端重定向,地址栏显示新的URL,不能共享`request`数据,效率较低。 7. **getAttribute()与getParameter()**: - `getParameter()`用于获取HTTP请求参数,仅适用于GET和POST请求,返回值是String类型,且不涉及请求转发。 - `getAttribute()`则是在请求转发中使用,可以在不同Web组件之间共享数据,需与`setAttribute()`配合使用,返回值可以是任意类型。 了解并掌握这些Java面试中的常见问题,对于提升Java开发者的技术水平和面试表现至关重要。在实际开发中,合理运用这些知识能够优化代码性能,处理异常,保证程序的稳定性和安全性。
- 粉丝: 1
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助