Java面试必备知识:基础篇

需积分: 3 1 下载量 160 浏览量 更新于2024-07-30 收藏 529KB DOC 举报
"Java面试宝典2010版,主要涵盖Java编程语言的基础知识、语法特性、面向对象概念、类与对象、接口、多态性、内部类等多个方面,适合准备Java面试者复习和学习。" 以下是相关知识点的详细说明: 1. Java源文件中的类限制:一个`.java`源文件可以包含多个类,但只能有一个公共类(public class),其余类可以是非公共类。 2. `goto`关键字:Java中没有`goto`关键字,它是一种流程控制语句,但在Java中被弃用。 3. `&`与`&&`的区别:`&`是逻辑与运算符,无论两边表达式是否为真都会进行计算;而`&&`是短路与运算符,如果左边表达式为假,则不会执行右边的表达式。 4. 跳出多重嵌套循环:使用`break`语句可以跳出最近的一个循环,若需跳出多层循环,可以配合标签(label)使用。 5. `switch`语句:在Java 7之前,`switch`不能作用于`byte`、`long`和`String`,但自Java 7起,`switch`可以支持`String`,Java 14后对`char`和`byte`数组也提供了支持。 6. `short`类型的变量加法:直接相加可能会导致数据溢出,因此`s1=s1+1`是错误的,需要类型提升。使用`s1+=1`则会自动处理类型转换。 7. `char`存储中文字符:`char`类型可以存储单个Unicode字符,包括中文汉字。 8. 计算2乘以8:最有效率的方法是直接使用`2 * 8`。 9. 设计大整数计算器:涉及大整数运算,可以使用`BigInteger`类来处理。 10. `final`关键字:修饰变量时,表示变量的引用不可变,即不能重新赋值,但如果是引用类型,所引用的对象的状态可以改变。 11. `==`与`equals`的区别:`==`比较的是变量的引用,而`equals`通常是对象内容的比较,对于基本类型或字符串,`equals`方法的行为与`==`相同。 12. 静态变量与实例变量:静态变量属于类,而实例变量属于类的每个对象,静态变量只有一份拷贝,实例变量每个对象一份。 13. `static`方法内部调用非`static`方法:不可以,因为`static`方法不依赖对象实例,而非`static`方法需要对象实例。 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. 接口可以继承接口,抽象类可以实现接口,但抽象类不能继承具体类(concrete class),抽象类中的`main`方法可以是静态的。 21. `clone()`方法通常包含`super.clone()`调用,用于创建对象的浅复制。 22. 面向对象的特征:封装、继承、多态。 23. Java实现多态的机制:通过接口和继承,以及方法的重写和动态绑定。 24. `abstract class`与`interface`:抽象类可以有方法实现,可以有构造器,可以包含非抽象方法;接口只有抽象方法和常量,不能有实例化代码。 25. `abstract`、`static`、`native`、`synchronized`组合:`abstract`不能与`static`、`native`同时使用,因为它们定义了不同的方法性质;`synchronized`可以与`abstract`、`native`组合,但意义有限。 26. 内部类:内部类是定义在另一个类内部的类,分为成员内部类、局部内部类、匿名内部类等,`StaticNestedClass`是静态嵌套类,与内部类(InnerClass)的主要区别在于是否需要外部类的实例。 27. 内部类可以访问包含类的所有成员,包括私有成员,但内部类对象只能在外部类对象存在的情况下创建。 28. 匿名内部类:没有类名的内部类,通常用于快速实现接口或父类的简单功能,常用于事件监听器等场景。