Java面试经典问题解析

需积分: 50 2 下载量 169 浏览量 更新于2024-07-21 1 收藏 2.01MB PDF 举报
"java面试宝典" 本资源是一份详尽的Java面试指南,特别是针对Java J2EE开发者的面试准备资料。它包含了多个关键的Java编程概念和技术问题,旨在帮助求职者增强对Java语言的理解,提升面试表现。 1. Java基础部分 - Java源文件可以包含多个类,但只能有一个公开的类(public class),其他类可以是非公开的(如private或无访问修饰符)。 - Java没有goto语句,提倡使用结构化编程。 - &是按位与运算符,&&是逻辑与运算符,后者具有短路特性,只在必要时计算第二个操作数。 - 使用`break`或`return`语句可以跳出多重嵌套循环。 - switch语句不能直接用于byte、long或String,但在Java 7及以上版本中,可以用于byte和char,Java 14及以上版本支持switch表达式,可配合String使用。 - shorts1=1;s1=s1+1;会因为结果是int类型而编译错误,应强制转换为short;s1+=1;则会自动装箱拆箱,无需额外操作。 - char型变量可以存储一个中文汉字,因为UTF-16编码可以表示中文字符。 - 最有效率的方式计算2乘以8是直接赋值:int result = 2 * 8。 - 设计一个一百亿的计算器要考虑大数运算和性能优化,可能需要使用BigInteger类。 2. Java高级特性 - final关键字修饰变量时,变量的引用一旦初始化后不能改变,如果是对象,则对象的内容不能变。 - "=="比较的是对象的引用,equals比较的是内容(对于非基本类型对象)。 - 静态变量属于类,实例变量属于对象,静态变量可直接通过类名访问,实例变量需先创建对象。 - 不能从static方法内部直接调用非static方法,因为static方法与类绑定,而非static方法与对象绑定。 - Integer是int的包装类,两者在存储和使用上有性能和自动装箱拆箱的区别。 - Math.round()方法四舍五入,11.5会变成12,-11.5会变成-11。 - 代码不妥之处可能包括未初始化的变量、类型转换错误或违反编程规范等问题。 - public、private、protected和默认(包级私有)访问修饰符分别代表全局、仅本类、同一包内和仅子类可见。 - Overload是重载,Override是重写,重载不改变方法签名,重写必须保持方法签名一致。 - 构造器不能被override,但可以被重载。 - 接口可以继承接口,抽象类可以实现接口,但不能继承具体类;静态的main方法不能在抽象类中定义。 - 实现clone()方法通常需要调用super.clone()并可能抛出CloneNotSupportedException。 - 面向对象的特征包括封装、继承和多态。 - Java中多态是通过方法的重写和父类引用指向子类对象实现的。 - abstract class和interface都是用于抽象,但抽象类可包含实现代码,接口只能声明方法。 - abstract method不能是static、native或synchronized,因为这些修饰符与抽象方法的定义相冲突。 - 内部类是定义在另一个类内部的类,分为静态嵌套类(StaticNestedClass)和非静态嵌套类(InnerClass),前者不依赖于外部类的实例,后者则需要。 这份面试宝典涵盖了广泛的Java基础知识和进阶主题,对于准备Java面试的开发者来说,是极有价值的参考资料。