Java面试必备:基础篇重点问题解析

需积分: 0 0 下载量 52 浏览量 更新于2024-07-22 收藏 1.12MB PDF 举报
"Java2013面试宝典包含了丰富的Java技术面试知识点,涵盖了Java的基础、语法特性、面向对象、类与对象、接口与抽象类、内部类等多个方面,旨在帮助求职者准备Java程序员的面试。" 以下是部分知识点的详细说明: 1. **Java源文件与类的关系**:一个.java源文件可以包含多个类,但只能有一个公共类(public class),且该公共类的名称必须与文件名相同。 2. **goto关键字**:Java语言中没有goto关键字,它采用了更严谨的控制流语句,如break、continue和return。 3. **&和&&的区别**:&是逻辑与运算符,无论两边表达式是否为真都会进行计算;而&&是短路与运算符,如果左侧表达式为假,则不会计算右侧表达式。 4. **跳出多重嵌套循环**:在Java中,可以使用`break label;`配合标签来跳出多重嵌套循环,或者使用`return`语句结束整个方法执行,从而间接跳出循环。 5. **switch语句的适用类型**:switch语句可以作用于byte、short、char和int类型,JDK 7以后还可以作用于枚举类型(enum)。但不能直接作用于long或String类型,JDK 7引入了字符串支持。 6. **short变量加法**:直接赋值`s1=s1+1`会导致数据类型提升为int,需要强制转换回short,因此会有错误。而`s1+=1`会自动处理类型提升和转换,所以没有问题。 7. **char存储中文**:char类型可以存储单个Unicode字符,包括中文汉字,因为它占据两个字节。 8. **计算2乘以8**:最有效率的方法是直接写`2 * 8`,Java会自动处理这种基本类型运算。 9. **设计亿级计算器**:设计一个亿级计算器要考虑数据类型的选择,可能需要使用long或BigInteger来避免溢出。 10. **final修饰变量**:final修饰的变量其引用不能改变,一旦初始化后就不能指向其他对象,但引用的对象内容可以改变。 11. **"=="与equals的区别**:"=="用于比较基本类型变量的值或对象的引用,而equals是Object类中的方法,用于比较对象的内容。 12. **静态变量与实例变量**:静态变量属于类,所有实例共享同一份;实例变量属于对象,每个对象有自己的副本。 13. **static方法调用非static方法**:不可以直接从static方法内部调用非static方法,因为static方法不依赖于对象实例,而非static方法需要对象实例。 14. **Integer与int**:Integer是int的封装类,提供了更多功能,但占用内存空间更大。当比较Integer对象时,需要使用equals方法,而比较int值则使用"=="。 15. **Math.round方法**:Math.round(11.5)等于12,Math.round(-11.5)等于-11。round方法将浮点数四舍五入为最接近的整数。 16. **代码不妥之处**:具体代码未给出,无法分析。一般要注意变量初始化、异常处理、边界条件等问题。 17. **访问修饰符的区别**:public表示公开,可以在任何地方访问;private表示私有,只能在本类中访问;protected表示受保护,可以在本包及子类中访问;无修饰符时表示包内访问。 18. **Overload与Override**:Overload是重载,方法名相同但参数列表不同;Override是重写,子类方法覆盖父类方法。重载不改变返回类型,但重写可以。 19. **构造器不可被override**:构造器不是方法,不存在重写概念,但可以通过子类构造器调用父类构造器。 20. **接口与抽象类**:接口只定义方法,不允许有实现;抽象类可以有实现,可以有非抽象方法。接口可以继承接口,抽象类可以实现接口,但抽象类不能继承具体类,且抽象类中可以有静态的main方法。 21. **clone()方法**:在实现Cloneable接口的类中,通常需要重写clone()方法,并在其中调用`super.clone()`来创建新对象。 22. **面向对象特征**:封装、继承、多态是面向对象的三大特征。 23. **Java多态机制**:通过接口或继承,实现方法的多态性,使得不同的类可以对同一消息作出不同的响应。 24. **abstractclass与interface的区别**:抽象类可以有方法实现,可以有非抽象方法和字段,可以有构造器;接口只有方法声明,不能有方法实现,字段默认为public static final。 25. **abstract与static、native、synchronized的组合**:抽象方法不能同时是static或native,因为它们不需要实例化即可调用,与抽象方法的定义相矛盾。同时,抽象方法也不能是synchronized,因为同步方法需要对象实例。 26. **内部类**:内部类是定义在类内部的类,分为成员内部类、局部内部类、匿名内部类。StaticNestedClass是静态内部类,不持有对外部类的隐式引用,而InnerClass是普通内部类,可以访问外部类的成员。 27. **内部类与外部类的引用**:内部类可以直接引用外部类的成员,包括私有成员,但不能访问静态成员。 28. **匿名内部类**:匿名内部类没有名称,通常用于快速实现接口或继承类的简单情况,它可以实现一个接口或继承一个类,但不能同时做这两件事。 以上只是部分内容的解释,Java面试宝典涵盖的知识点远不止这些,包括异常处理、集合框架、IO流、多线程、网络编程、设计模式等多个方面,对于深入理解和掌握Java编程非常重要。