Java面试必备知识精粹

需积分: 0 2 下载量 119 浏览量 更新于2024-07-23 收藏 1.12MB PDF 举报
"Java面试宝典2013" 这篇文档是针对Java程序员的面试准备指南,涵盖了2013年常见的Java面试问题。以下是对其中提到的一些关键知识点的详细解释: 1. Java源文件可以包含多个类,但只能有一个公开类(public class),其余的类可以是非公开的(package-private)。 2. Java语言中没有`goto`关键字,它被视为过时控制流结构,不被支持。 3. `&`是位运算符,而`&&`是逻辑运算符。位运算符会计算两个操作数的每一位,而逻辑运算符会在左侧操作数确定后就停止计算,称为短路逻辑。 4. 跳出多重嵌套循环,可以使用`break`语句配合标签(label)来实现。 5. `switch`语句在Java 7及之前不能用于`byte`,但在Java 7之后可以。它不能用于`long`和`String`,但Java 7引入了字符串支持,Java 14则引入了对`char`数组的支持。 6. 对于`short s1=1;`,直接加1会导致类型提升,需要强制转换:`s1=(short)(s1+1);`。而`s1+=1;`会自动处理类型提升,无需额外转换。 7. `char`变量可以存储一个中文字符,因为Unicode编码包含了中文字符。 8. 计算2乘以8的最有效率方式是`2 << 3`,利用位左移运算。 9. 设计一个能处理一百亿的计算器,需要考虑数据类型的选用,如使用`BigInteger`类处理大整数。 10. 使用`final`关键字修饰变量时,引用一旦赋值就不能改变,但引用的对象内容可以改变。如果对象是不可变的(如`final String`),那么对象本身及其内容都不能改变。 11. `==`比较的是对象的引用,而`equals`方法比较的是对象的内容。对于基本类型,`==`就是内容比较,对于对象,`equals`需要重写才能比较内容。 12. 静态变量属于类,实例变量属于对象。静态变量在内存中的位置是在方法区,实例变量在堆内存中。 13. 不能从静态方法内部直接调用非静态方法,因为静态方法与类关联,而非静态方法与对象关联。 14. `Integer`是`int`的包装类,它们之间可以进行自动装箱拆箱,但是它们的存储方式和使用场景不同,`Integer`适合对象操作,`int`适合数值运算。 15. `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 16. 未提供具体代码,无法分析不妥之处。 17. 公共(public)可以被所有类访问,私有(private)只能在类内部访问,受保护(protected)在同一包内或子类中可访问,无修饰符(默认)则在同包内可访问。 18. Overload是重载,可以改变参数列表,但不能改变返回类型。Override是重写,必须保持方法签名一致,主要是为了实现多态。 19. 构造器不能被重写(override),但可以重载(overload)。 20. 接口可以继承接口,抽象类可以实现接口,但抽象类不能继承具体类(concrete class)。抽象类中可以有静态的`main`方法,但无法作为程序的入口点。 21. 在实现`clone()`方法时,通常会调用`super.clone()`以获取原始对象的副本。 22. 面向对象的特征包括封装、继承和多态。 23. Java通过方法的重写(Override)和接口的实现来实现多态。 24. `abstract class`可以有方法实现,而`interface`所有方法默认都是抽象的。`abstract class`可以有构造器,`interface`没有。 25. `abstract`方法不能同时是`static`、`native`或`synchronized`,因为这些特性与抽象方法的定义相冲突。 26. 内部类是定义在一个类内部的类,可以是静态(StaticNestedClass)或非静态(InnerClass)。静态内部类不需要对外部类的引用,非静态内部类需要。 27. 内部类可以直接访问外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员。 28. 匿名内部类可以继承其他类或实现接口,但不能声明为`extends`或`implements`,因为其名称本身就是匿名的。 以上是对Java面试宝典2013中部分内容的详细解释,这些知识点是Java开发者应该熟悉的基础概念和重要特性。