Java面试必备知识点:基础与进阶

需积分: 13 0 下载量 101 浏览量 更新于2024-07-24 收藏 739KB DOC 举报
"这是一份2013年的Java面试复习资料,涵盖了Java基础知识,包括类定义、关键字使用、运算符、循环控制、数据类型、方法重载与覆盖、访问权限、面向对象特性等多个方面的问题。" 这篇摘要主要讨论了Java编程语言中的关键概念和面试常见问题,下面是对这些问题的详细解释: 1. Java源文件可以包含多个类,但只能有一个公开类(public class),其他类可以是非公开的(非public)。 2. Java没有`goto`关键字,它采用结构化编程思想,避免了无控制的跳转。 3. `&`是位运算符,`&&`是逻辑运算符。前者始终计算两边的操作数,后者(短路逻辑与)仅在必要时计算第二个操作数。 4. 跳出多重嵌套循环可以使用`break`语句,配合标签(label)来指定跳出特定循环。 5. `switch`语句不能直接作用于`byte`,`long`或`String`,但在Java 7及以上版本,`switch`可以用于`String`。 6. 对于`short s1=1;`,`s1=s1+1;`会引发编译错误,因为结果是`int`类型。而`s1+=1;`会自动转换回`short`类型。 7. `char`型变量可以存储单个中文字符,因为UTF-16编码允许。 8. 计算2乘以8最有效率的方法是直接写`2 * 8`。 9. 设计一个能处理一百亿的计算器,需要考虑数据类型的选用,如使用`BigInteger`类处理大整数。 10. 使用`final`关键字修饰变量时,引用不能变,意味着不能重新赋值指向新的对象,但引用的对象内容可以变。 11. `==`比较的是对象的引用,而`equals()`比较的是对象的内容。对于基本类型,`==`就是内容比较;对于对象,需要重写`equals()`进行内容比较。 12. 静态变量属于类,实例变量属于对象。静态变量由所有实例共享,实例变量仅在对象内部可见。 13. 不能从`static`方法内部直接调用非`static`方法,因为`static`方法与对象无关,无法访问非`static`成员。 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),但可以重载。 20. 接口可以继承接口,抽象类可以实现接口,抽象类可以继承具体类,静态主方法(`static main`)存在于类中,而不是抽象类。 21. 实现`clone()`方法时,通常会包含`super.clone()`调用以创建新对象。 22. 面向对象的特征包括封装、继承和多态。 23. Java通过方法重写(Override)和方法签名的匹配实现多态。 24. `abstract class`可以包含方法实现,而`interface`不能。抽象类可以有非抽象方法,但接口的所有方法默认都是抽象的。 25. `abstract`方法不能同时是`static`、`native`或`synchronized`,因为这些关键字与抽象方法的定义相冲突。 26. 内部类(Inner Class)是定义在另一个类内部的类,它可以访问外部类的所有成员。Static Nested Class是静态内部类,不持有对外部类的引用。 27. 内部类可以引用其包含类的成员,包括私有成员,但静态内部类不能直接访问外部类的非静态成员,需要通过外部类实例来访问。 这些知识点是Java程序员应该掌握的基础,对于准备面试和提升编程技能都非常有帮助。