Java面试必备:基础篇

需积分: 0 0 下载量 122 浏览量 更新于2024-07-29 收藏 530KB DOC 举报
"Java面试宝典2011" 这是一本针对Java程序员面试的指南,包含了丰富的面试题目,涵盖了Java基础知识、SSH框架以及智力和编程题目。以下是其中部分关键知识点的详细解释: 1. **Java源文件与类的关系**:一个.java源文件可以包含多个类,但只能有一个公共类(public class),且公共类的名称必须与文件名相同。 2. **goto关键字**:Java中没有goto关键字,它遵循结构化编程原则,鼓励使用控制流语句如if、while、for和break来控制程序流程。 3. **& 和 && 的区别**:& 是位运算符,用于进行按位与操作;而&&是逻辑运算符,用于逻辑与,只有当两边的操作数都为真时,结果才为真。在条件判断中,&&会进行短路计算,即如果左边为假,则不会评估右边表达式。 4. **跳出多重嵌套循环**:在Java中,可以使用`break`语句跳出最内层循环,`return`语句可以结束当前方法并返回到调用者,从而间接跳出多重循环。 5. **switch语句的使用**:switch不能直接作用于byte,但可以通过类型转换使用;不能作用于long,因为Java的switch只支持byte、short、char和int以及枚举类型;Java 7及以上版本开始,switch可以作用于String。 6. **short变量的加法**:直接赋值`s1=s1+1`可能会导致数据溢出,因为编译器会将两个short相加后转换为int类型,然后赋值给short变量,需要强制类型转换。而`s1+=1`则会自动处理这种转换。 7. **char存储中文**:char类型在Java中占用2个字节,可以存储一个Unicode字符,因此可以存储中文汉字。 8. **效率计算2乘以8**:最有效率的方式是直接使用`2 << 3`,这是位左移运算,等同于2乘以8。 9. **设计大整数计算器**:设计一个能处理大整数的计算器需要考虑使用String或BigInteger类来存储和操作大整数。 10. **final关键字**:final修饰的变量一旦赋值后不能改变,对于引用类型,final确保引用本身不可变,但引用的对象状态可能可变。 11. **"=="与equals的区别**:"=="比较的是对象的引用,而equals()是用于比较对象的内容。对于基本类型,"=="和equals()行为一致,但对于对象,equals()通常重写以比较对象内容。 12. **静态变量与实例变量**:静态变量属于类,所有实例共享;实例变量属于对象,每个实例有自己的副本。 13. **静态方法与非静态方法**:静态方法不能直接访问非静态成员,因为非静态成员依赖于特定对象实例。 14. **Integer与int**:Integer是int的包装类,可以进行对象操作,如缓存、比较等;int是原始类型,效率更高,但不支持对象操作。 15. **Math.round()**:Math.round(11.5)等于12,Math.round(-11.5)等于-11。 16. **代码不妥之处**:未提供具体代码,无法分析。 17. **访问修饰符的区别**:public表示全局可访问,private仅限于同一类,protected在同一包和子类中可见,无修饰符的默认为包级私有。 18. **Overload与Override**:Overload是方法重载,可以改变参数列表,但不能改变返回值类型;Override是方法重写,必须保持方法签名一致,主要在子类中实现父类方法。 19. **构造器是否可被override**:构造器不能被重写,但可以被重载。 20. **接口与继承关系**:接口可以继承接口,抽象类可以实现接口,但不能继承具体类。具体类可以继承抽象类,也可以实现接口。 21. **clone()方法**:在实现clone()时,通常会调用`super.clone()`以创建对象的浅复制。 22. **面向对象特征**:封装、继承、多态。 23. **Java多态机制**:通过方法重写(Override)和向上转型(Upcasting)实现。 24. **abstract class与interface的区别**:抽象类可以有方法实现,可以有非抽象方法,可以有实例变量;接口只有抽象方法,没有实例变量,强制实现所有方法。 25. **abstract method的特性**:abstract不能与static、native和synchronized同时使用,因为它们的性质相冲突。 26. **内部类**:内部类是定义在另一个类中的类,分为静态嵌套类(Static Nested Class)和非静态内部类(Inner Class)。静态嵌套类不持有对外部类的引用,而内部类则可以直接访问外部类的成员。 27. **内部类与外部类的交互**:内部类可以引用外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员。 28. **匿名内部类**:没有名字的内部类,通常用于快速实现一个接口或继承一个类,常见于事件处理器和一次性使用的类。 以上是Java面试宝典2011中部分重要知识点的详解,这些内容对于准备Java面试的开发者来说非常有帮助,能够帮助他们更好地理解和掌握Java语言的核心概念和最佳实践。