Java面试必备知识点详解

需积分: 3 2 下载量 195 浏览量 更新于2024-07-20 收藏 602KB DOC 举报
"Java面试宝典2011版包含了Java编程基础到高级特性的面试问题,涵盖了许多核心概念和技术,旨在帮助求职者准备Java程序员的面试。文档中列举了多个问题,涉及类与文件结构、控制流、数据类型、运算符、字符串处理、异常处理、封装、继承、多态、接口、抽象类、内部类等多个方面。" 1. 一个".java"源文件中可以包含多个类,但只能有一个公开类(public class),其他类可以是非公开的(非public)或内部类(inner class)。 2. Java没有`goto`关键字,它遵循结构化编程原则,鼓励使用控制流语句(如if、while、for、switch)来控制程序流程。 3. `&`是位运算符,用于按位与操作;`&&`是逻辑与运算符,只有当两边的条件都为真时,结果才为真。在布尔表达式中,`&&`具有短路特性,如果左侧为假,则不会评估右侧。 4. 在Java中,可以使用`break`语句跳出最内层的循环。若需要跳出多重嵌套循环,可以使用标签(label)配合`break`。 5. `switch`语句可以作用在`byte`, `short`, `char`, 和 `int`类型上,自Java 7起,也可以作用在枚举类型(enum)上。但不能直接作用于`long`和`String`,不过可以通过包装类(如`Long`)或枚举来间接实现。 6. `short s1=1; s1=s1+1;`会有编译错误,因为结果是int类型,需要显式转换为short。而`s1+=1;`会自动进行类型转换。 7. `char`型变量可以存储一个中文汉字,因为Unicode编码包含了中文字符。 8. 最有效率计算2乘以8的方法是直接赋值:`int result = 2 * 8;`。 9. 设计一个一百亿的计算器要考虑数值的精度和存储方式,可以使用BigDecimal类处理大数运算。 10. 使用`final`关键字修饰变量时,变量的引用一旦赋值后不可更改,但如果是引用对象,对象的属性可以改变。 11. `==`比较的是对象的引用,而`equals`方法比较的是对象的内容。对于基本类型,两者行为相同,但对于对象,`equals`需要重写才能实现自定义比较。 12. 静态变量属于类,所有类实例共享;实例变量属于每个实例,每个实例有自己的副本。 13. 不可以从一个静态方法内部直接调用非静态方法,因为静态方法与类关联,而非静态方法与类实例关联。 14. `Integer`是`int`的包装类,它提供了更多的方法和功能,比如自动装箱拆箱,而`int`是原始数据类型。 15. `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11,`Math.round()`方法四舍五入到最接近的整数。 16. 未给出代码,无法分析不妥之处。 17. `public`、`private`、`protected`和默认访问修饰符(无修饰符)分别代表公共、私有、受保护和包内可见的访问权限。 18. Overload(重载)是指方法名相同但参数列表不同的方法,返回值类型不能作为重载的依据。Override(覆盖)是指子类重写父类中的方法,必须保持方法名、参数列表和返回类型一致。 19. 构造器不能被覆盖,但可以被重载。 20. 接口可以继承接口。抽象类可以实现接口,但不能继承具体类。静态内部类(StaticNestedClass)是类的静态成员,不持有对外部类的引用;非静态内部类(InnerClass)是类的实例成员,可以访问外部类的私有成员。 21. 写`clone()`方法时,通常会有一行`super.clone()`,用于调用Object类的`clone()`方法,创建对象的浅拷贝。 22. 面向对象的特征包括封装、继承、多态。 23. Java中实现多态主要通过方法重写(Override)和接口实现(Implements)。 24. `abstract class`可以包含方法实现,而`interface`只能声明方法(默认为public abstract)。抽象类可以有非抽象方法、字段、构造器,而接口不能。 25. `abstract`方法不能同时是`static`、`native`或`synchronized`,因为这些特性与抽象方法的定义冲突。 26. 内部类是定义在另一个类内部的类,可以访问外部类的所有成员。StaticNestedClass是静态内部类,不需要外部类实例就可以创建,而InnerClass是非静态内部类,需要外部类实例。 27. 内部类可以引用它的包含类的成员,包括私有成员,但静态内部类不能直接访问外部类的非静态成员。 28. AnonymousInnerClass(匿名内部类)可以继承其他类或实现接口,常用于简洁地实现一次性使用的类。 这些问题是Java面试中常见的题目,理解和掌握这些问题的答案将有助于提升面试表现和编程能力。